E N D
C# • Webcam پیش نیاز ها
اولین کاری که انجام میدهیم این است که وب کم را از طریق API به C# وصل کنیم. که این کار را کلاسی به نام Pinvokeانجام میدهد. ما فقط چند dll را در این کلاس فراخوانی می کنیم. مهمترین dll که در این سیستم استفاده شده است avicap32.dll که جهت اتصال به وب کم به کار میرود. برای دیدن نحوه کار با این DLLاینجا کلیک کنید. نحوه کار
DLL دوم مربوط به تنظیمات انترفیس به نام user32 می باشد. همانطور که گفته شد ما از win32 Api استفاده کرده ایم. پس مجبوریم که پنجره ها و فلگ ها را به صورت Cross-Platform استفاده کنیم. برای دیدن آموزش استفاده به صورت Cross-Platformاینجا کلیک کنید. نحوه کار
در انتها، پس از انجام تنظیمات API، کلاس را به یک DLL به نام Pinvoke تبدیل کرده و به عنوان Reference در برنامه های آتی استفاده می کنی. نحوه کار
اکنون که DLL مورد نظرمان ساخته شد زمان ایجاد یک کلاس به نام CaptureDevice و فرم ویندوزی است. ارتباطات را از طریق CaptureDeviceبا فرم برقرار میکنیم. ارتباطاتی نظیر تعداد وب کم ها، و لود اولیه (initialize) سخت افزار. پروژه اصلی
این کلاس درهنگام ایجاد سه متغیر را مقدارددهی می کند که عبارتند از شماره وبکم، نام وبکم، و توضیحات مربوط به آن. کلاس CaptureDevice
Attach(Control): جهت برقراری ارتباط و در انحصار گرفتن وب کماستفاده می کنیم. کنترلی را که میخواهیم وب کم را بدان وصل کنیم (مثل کنترل Panel یا PictureBox) به عنوان پارامتر می فرستیم. • Detach:جهت آزاد کردن وب کم. • Capture:عکس گرفتن از وبکم • GetDevices: برگرداندن لیست وب کم ها فانکشن های کلاس CaptureDevice
در لود اولیه، لیست وب کم ها را از طریق یک حلقه و فانکشن GetDevices مربوط به کلاس CaptureDeviceاضافه می کنیم. • با زدن دکمه Start فانکشن Attach مربوط به کلاس CaptureDeviceفراخوانی کرده و کنترل PictureBox را بدان انتصاب می دهیم. • با دکمه Stop ارتباط با وبکم ها از طریق Detach قطع می شود. • با دکمه Snapshot یک تصویر از طریق فانکشن Capture گرفته و تصویر بازگشتی را در روت نرم افزار ذخیره می کنیم. فرم
تا کنون توانستیم وبکم را در فرم نمایش دهیم. حال می خواهیم رنگ یک مربوط به وسط تصویر را نمایش دهیم. برای اینکار باید سرعت به روز رسانی تصاویر زا وب کم را کمی با تاخیر از سرعت واقعی نمایش دهیم.زیرا ترانسپرنت کردن نشانگر تشخیص رنگ نیاز به زمان دارد. برای به روزرسانی تصویر از پانل و تایمر استفاده میکنیم. زیرا در پانل می توانیم تصاویر ترانسپرنت استفاده کنیم. کنترل تایمر در باز زمانی خود رنگ را از تصاویر پنل برداشته و نمایش می دهد تشخیص رنگ