در قسمت نهم از مجموعه آموزشی پردازش تصویر در پایتون، گفتیم که عملگر آستانه چیست و به آموزش آن پرداختیم. با انتخاب آستانه مناسب قسمتی از تصویر که تار بود را خواناتر کردیم و در نهایت با آستانه متغیر و با متد گوسی بر روی قسمتهای مختلف تصویر، آستانه متفاوتی اعمال کردیم و تصویر را نسبت به حالت قبل بهبود دادیم. در این قسمت قصد داریم در رابطه با فیلتر رنگ در ویدئو صحبت کنیم.
در ادامه با یک فرمت متفاوت از قبل به اسم 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() بود
نویسنده شو !
سیسوگ با افتخار فضایی برای اشتراک گذاری دانش شماست. برای ما مقاله بنویسید.