در قسمت نهم از مجموعه آموزشی پردازش تصویر در پایتون، گفتیم که عملگر آستانه چیست و به آموزش آن پرداختیم. با انتخاب آستانه مناسب قسمتی از تصویر که تار بود را خواناتر کردیم و در نهایت با آستانه متغیر و با متد گوسی بر روی قسمتهای مختلف تصویر، آستانه متفاوتی اعمال کردیم و تصویر را نسبت به حالت قبل بهبود دادیم. در این قسمت قصد داریم در رابطه با فیلتر رنگ در ویدئو صحبت کنیم.
در ادامه با یک فرمت متفاوت از قبل به اسم HSL آشنا میشویم. این فرمت بر خلاف فرمت RGB شامل، نوع رنگ، شدت رنگ، و شدت نور میباشد. برای توضیحات بیشتر در این رابطه ویدئوی پیوست این مقاله را مشاهده کنید.
ما هم در ادامه ابتدا فرمت را از BGR به HSL تبدیل میکنیم و سپس در مورد فیلتر رنگ صحبت خواهیم کرد.
فیلتر رنگ در ویدئو
اگر بخواهیم یک رنگ خاص را در ویدئو فیلتر کنیم، ابتدا باید به نحوی آن رنگ را تشخیص دهیم و سپس آن را فیلتر کنیم. ما در اینجا یک محدوده تعیین کردیم و در بین این محدوده رنگ را فیلتر کردیم.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | import cv2 import numpy as np cap = cv2.VideoCapture(0) while(1): _, frame = cap.read() hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV) lower_red = np.array([50, 100, 50]) upper_red = np.array([255, 255, 255]) mask = cv2.inRange(hsv, lower_red, upper_red) res = cv2.bitwise_and(frame, frame, mask=mask) cv2.imshow('frame', frame) cv2.imshow('mask', mask) cv2.imshow('res', res) if (cv2.waitKey() & 0xFF) == 27: break cv2.destroyAllWindows() cap.release() |
پس از اینکه برنامه بالا را اجرا کردیم خروجی که از وبکم ضبط میشود همانند تصاویر زیر است:
این مقاله برگرفته از آموزش ویدئویی زیر میباشد، برای مشاهدهی جزئیات بیشتر حتما این ویدئو را مشاهده بفرمائید.
سلام
خسته نباشید
بعد از اجرای این کدها، خروجی به صورت پشت سرهم پخش نمیشه، و لازمه که هر سه window بسته بشه، تا فریم بعدی رو نشون بده، امکانش هست راهنمایی کنید مشکل چیه ؟
حل شد، مشکل از v2.waitKey() بود