تشخیص پوست بدن با OpenCV

 در پست قبلی (تشخیص رنگ با استفاده از OpenCV و Python)، نحوه تشخیص رنگ های مختلف درون یک تصویر را با استفاده از دستور inRange آموزش دادم. اکنون با استفاده از این آموزش و کمی فیلترهای مختلف، قصد دارم برنامه ای برای تشخیص پوست بدن بنویسم. برای امتحان درستی کد از دوربین Raspberry pi استفاده می کنم. کدها توسط OpenCV 3.0.0 و Python 2.7 نوشته شده اند.

 

   ابتدا پکیج های لازم را فراخوانی می کنیم. پکیج Numpy برای Numerical Processing و پکیج cv2 برای OpenCV است.

   برای تشخیص رنگ، ساده ترین روش استفاده از حالت HSV نسبت به BGR است. چون می خواهیم از دستور inRange برای ساخت ماسک استفاده کنیم به همبن دلیل باید محدوده ای برای رنگ پوست انتخاب کنیم. با کمی جستجو در اینترنت می توانید رنگ پوست مورد نظر را بدست آورید.

 

   چون می خواهیم از دوربین استفاده کنیم، پس با استفاده از دستور cv2.VideoCapture، استفاده از دوربین را آماده می کنیم.

   برای اینکه عملیات پردازش بر روی هر فریم سریع تر انجام شود، بهتر است ابعاد فریم ها رو کوچکتر کنیم. به همین جهت، ابعاد فریم ها را به ۳۰۰ پیکسل کاهش می دهیم.

   در قسمت بعدی هر فریم را از حالت BGR به HSV تبدیل می کنیم و در آخر توسط دستور inRange یک ماسک براساس رنگ پوست می سازیم.

   در برخی مواقع ممکن است قسمت های کوچک و اشتباهی در تصویر مشخص شوند. برای از بین بردن این قسمت ها از فیلترهای erode و dilate استفاده خواهیم کرد. ولی قبل از آن یک ماتریس به شکل ellipse طراحی می کنیم و ابعاد آن را ۱۰*۱۰ انتخاب می کنیم. توجه کنید هرچه ابعاد ماتریس بیشتر باشد عملیات پردازش کندتر ولی نتیجه با کیفیت بالاتری خواهد بوذ.

   در مرحله بعدی با استفاده از دستور cv2.bitwise_and، هر فریم را باخودش و برحسب ماسک AND خواهیم کرد.

   در آخر نوبت به نمایش نتیجه می رسد. برای خروج از برنامه از کلید q استفاده خواهیم کرد. 

mehdi sehati

در این سایت پروژه و آموزش های انواع ماژول ها و میکروکنترلر ها و نحوه ارتباط سخت افزار با نرم افزار (برنامه نویسی اندروید برای گوشی و برنامه نویسی سی شارپ برای کامپیوتر) و برنامه نویسی پایتون و رسبری پای و ماژول های وای فای قرار میگیرد همچنین دوستان برای توضیحات بیشتر و سفارش پروژه میتوانند به آی دی تلگرام بنده مراجعه کنند

مطالب مرتبط

Subscribe
Notify of
guest

0 نظرات
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x