خواندن دوربین رایانه توسط OpenCV با پایتون

تا به اینجا و توسط متد ()imread تنها فایل های تصویر (مثلا فرمت های png, jpg و jpeg) را خوانده ایم ولی قاعدتا شما می توانید دوربین سیستم خود (Webcam) یا فایل هایی ودیویی (مثلا فرمت mp4) را که روی دیسک ذخیره شده اند را توسط کلاس VideoCapture از کتابخانه OpenCV بخوانید. ما در این مطلب می خواهیم به شما یاد دهیم که چگونه فریم های ویدیو دوربین Webcam خود را خوانده و در مطلب های بعدی یاد می دهیم چگونه این فریم ها را ذخیره کنید و یا حتی روی فریم ها یک متن قرار دهید

تبدیل فریم ویدیو به تصویر و بلعکس OpenCV

برنامه نویسی واسط گرافیکی در OpenCV – ایجاد Trackbar در OpenCV

قرار دادن متن روی تصویر و ویدیو توسط کتابخانه OpenCV

Flip کردن تصویرها و ویدیوها در OpenCV

تغییر اندازه تصویر در OpenCV

در این مطلب توضیح می دهیم چگونه ابعاد دوربین رایانه تان را توسط OpenCV تنظیم کنید و چگونه تصویر دریافتی را Flip کنید. توجه کنید اگر به سیستم شما چند دوربین متصل است، پس باید بدانید هر دوربین از عدد صفر به بعد دارای یک شماره است. چون لپ تاپ ها دارای یک دوربین درونی خودشان هستند، پس شماره تنها دوربین عدد صفر است که ما در ادامه آن را به عنوان منبع دریافت فریم ها به متد سازنده کلاس VideoCapture فرستاده ایم.

اگر می خواهید یک ویدیو درون دیسک را توسط OpenCV اجرا کنید، پس باید نام و یا مسیر کامل آن را به متد سازنده کلاس VideoCapture بفرستید.

پس از ایجاد شی از کلاس VideoCapture می خواهیم بررسی کنیم که آیا دسترسی به Webcam یا فایل ویدیویی روی دیسک به درستی انجام شده است یا نه؟ برای این منظور باید همانند کد زیر از متد ()isOpened استفاده کنیم. این بررسی به خصوص در مورد فایل های ویدیویی روی دیسک انجام می شود.

حال می خواهیم برای تنظیم ابعاد دو خصوصیت (Property) را توسط متد ()set از کلاس VideoCapture تنظیم کنیم. این دو خصوصیت CAP_PROP_FRAME_WIDTH و CAP_PROP_FRAME_HEIGHT نام دارند و به ترتیب برای تنظیم عرض و ارتفاع ویدیو دریافتی از Webcam مورد استفاده قرار می گیرند. اگر سیستم شما حافظه اصلی کمی دارد، حتما برای کوچک کردن فریم ها (ماتریس) ابعاد را تنظیم کنید.

حال نوبت آن است که در یک حلقه درست تا زمانی که فریم وجود داشته باشد، توسط متد ()read فریم های تصویر را بخوانیم. همچنین در کدهای زیر ابتدا تصویر ورودی را از حالت رنگی به تصویر یا بهتر بگوییم فریم های خاکستری تبدیل کرده ایم. برای چگونگی کاربرد متد ()cvtColor لطفا مطلب جداسازی کانال تصویر توسط متد split در OpenCV را بخوانید.

پس از تبدیل فریم از فضای رنگی BGR به خاکستری، لحظه به لحظه فریم های دریافتی را توسط متد ()imshow نشان می دهیم تا زمانی که مطابق خط های بعدی کلید s (کوچک در این مثال) فشرده شود تا سپس پنجره ویدیو بسته شود. در نهایت متد ()release از کلاس VideoCapture را برای آزاد سازی و رها سازی Webcam در بیرون از بدنه حلقه while صدا زده ایم.