فهرست مطالب:
- تدارکات
- مرحله 1: عملکرد FaceDetect
- مرحله 2: تابع BackgroundRemove
- مرحله 3: عملکرد VideoEdges
- مرحله 4: عملکرد VideoBlur
- مرحله 5: پیشرفت ها
تصویری: پروژه های اساسی OpenCV: 5 مرحله
2024 نویسنده: John Day | [email protected]. آخرین اصلاح شده: 2024-01-30 08:53
در این پروژه ، برخی از قابلیت های اساسی OpenCV را از طریق 4 پروژه ساده که شامل جریان مستقیم ویدئو می شوند ، بررسی می کنیم. اینها تشخیص چهره ، حذف پس زمینه ، نمایش بصری ویژه لبه ها و اعمال جلوه ای تار در جریان ویدئوی زنده است. هدف اصلی من از امتحان این پروژه ها این بود که به سادگی پایم را با رابط OpenCV خیس کنم ، زیرا قصد دارم در زمینه بینایی کامپیوتر عمیق تر عمل کنم.
تدارکات
- رایانه ای که پایتون را اجرا می کند
- باز کردن کتابخانه CV ، کتابخانه Numpy ، کتابخانه tkinter ، کتابخانه sys
- دوربین برای اتصال به کامپیوتر (در صورتی که رایانه قبلاً شامل آن نشده باشد)
- فایل پایتون برنامه (شامل این دستورالعمل)
- فایل xml haarcascade (شامل این دستورالعمل)
مرحله 1: عملکرد FaceDetect
این عملکرد ویدئوی دوربین شما را با مربع های سبز رنگ در هر صورتی که بر می دارد نشان می دهد. در کد ، ما از تابع cv2. VideoCapture () برای ذخیره ویدئویی که در حال ضبط شدن هستیم در یک شی به نام "capture" استفاده می کنیم. CAPTURE_INDEX عددی است که توسط رایانه شما تنظیم شده است و با فهرست دوربین شما در لیست ورودی ویدیوی رایانه مطابقت دارد. اگر دوربین خارجی به کامپیوتر وصل نیستید ، 0 یا 1 باید کار کند.
آبجکت face_cascade با استفاده از تابع cascadeClassifier و فایل "haarcascade_frontalface_default.xml" موجود در github OpenCV راه اندازی می شود. ما از این شی برای ذخیره چهره های شناسایی شده در لیست "چهره ها" به عنوان ورودی چهار ضلعی استفاده می کنیم که صورت x مختصات ، y مختصات ، عرض و ارتفاع را در بر می گیرد. سپس یک مستطیل ترسیم می کنیم که با استفاده از تابع cv2.rectangle صورت را کاملا در بر می گیرد
از این ویدئو ، OpenCV با استفاده از capture.read () و ذخیره تصویر در قاب ما "img" ، بسیاری از تصاویر را در حلقه while ما ضبط می کند. سپس هر تصویر به دلخواه ما تفسیر و اصلاح می شود. برای faceDetect ، ما با استفاده از تابع cvtColor تصویر را خاکستری می کنیم که هر تصویری را که در پارامتر اول داده می شود به نوع خاصی از رنگ تصویر مشخص شده در پارامتر دوم تبدیل می کند. لیست مقادیر قابل قبول برای پارامتر دوم را می توان بصورت آنلاین یافت. سپس با استفاده از تابع imshow () که برای نام پنجره و قاب تصویر نمایش داده می شود ، تصویر را در پنجره ای با نام "تشخیص چهره" نمایش می دهیم.
در نهایت منتظر می مانیم تا کاربر کلید q را با استفاده از تابع cv2.waitKey () وارد کند. ماسک 0xFF به عنوان یک رایانه برای رایانه های 64 بیتی استفاده می شود. پس از اتمام جریان ویدیویی توسط کاربر ، عملکرد faceDetect شیء ضبط را آزاد می کند و سپس پنجره های دیگر باز شده در زیر رابط OpenCV را از بین می برد. همه عملکردهای دیگر از یک ساختار طراحی مشابه پیروی می کنند.
مرحله 2: تابع BackgroundRemove
این عملکرد سعی می کند قسمت پس زمینه ویدئوی ما را حذف کرده و فقط تصویر پیش زمینه را باقی بگذارد. ممکن است در برخی از دوربین ها کار نکند ، زیرا آنها از قابلیت تنظیم نور استفاده می کنند که هنگام ورود اشیاء/ کانون های مختلف به قاب فعال می شود. اگر عملکرد backgroundRemove شما کار نمی کند ، ناراحت نشوید- فقط می تواند دوربین شما باشد!
برای استفاده از این عملکرد ، از قاب دوربین فاصله بگیرید و کلید "d" را برای گرفتن تصویر پس زمینه فشار دهید. مهم این است که هیچ اشیاء متحرکی در پس زمینه ای که می خواهید عکس بگیرید وجود نداشته باشد. سپس ، می توانیم به قاب دوربین بازگردیم. اگر عملکرد کار کرد ، کاربر فقط باید خود را در جریان ویدیوی عملکرد مشاهده کند. هر گونه نویز/لکه های سیاه در تصویر پیش زمینه ممکن است نتیجه تنظیم نور دوربین باشد. برای گرفتن پس زمینه دیگر ، کلید "r" را برای راه اندازی مجدد فشار دهید ، سپس دوباره "d" را فشار دهید.
برخی از نکات کلیدی برای این تابع استفاده از بولین "پرچم" است که به محض فشردن دکمه d توسط کاربر بالا می رود. این پس زمینه را ضبط می کند و به ما امکان می دهد آن را از ویدیویی که توسط عملکرد پخش می شود حذف کنیم. هدف ما ذخیره تصویر پس زمینه در ref_img است تا بتوانیم آن را از تصویر پیش زمینه که هرگونه جسم متحرک را ضبط می کند ، متمایز کنیم. ما از تابع cv2.subtract () برای کم کردن تصویر پیش زمینه از تصویر پس زمینه و بالعکس استفاده می کنیم ، سپس هرگونه تفاوت جزئی در دو تصویر را بلافاصله پس از آن لغو می کنیم. پس زمینه سیاه شده است.
ماسک fgmas با استفاده از تفاوت بین این دو تصویر ساخته می شود و سپس با استفاده از تابع OpenCV cv2.bitwise_and () روی جریان ویدیو توابع اعمال می شود.
مرحله 3: عملکرد VideoEdges
این عملکرد جریان ویدئویی زنده ما را برمی گرداند ، اما لبه های قابل تشخیص سفید می شوند در حالی که سایر موارد سیاه شده است. آنچه این عملکرد را از سایر توابع متمایز می کند ، تبدیل فیلم اصلی ما از فرمت RBG به HSV است که مخفف رنگ ، اشباع و تنوع است- روش متفاوتی برای پردازش نور و رنگ از فیلم. با استفاده از این روش ، ما می توانیم با استفاده از یک فیلتر (قرمز_کاهش به قرمز_بالا) به راحتی خطوط کلی را در ویدیو تشخیص دهیم.
Canny Edge Detection برای تشخیص لبه های یک تصویر استفاده می شود. این تصویر مقیاس خاکستری را به عنوان ورودی می پذیرد و از الگوریتم چند مرحله ای استفاده می کند.
مرحله 4: عملکرد VideoBlur
این تابع برای افزودن یک اثر تار به جریان ویدئویی ما استفاده می شود. تابع ساده تابع GaussianBlur cv2 را در فریم ما فرا می خواند. اطلاعات بیشتر در مورد عملکرد gaussianBlur را می توانید در اینجا پیدا کنید:
opencv-python-tutroals.readthedocs.io/fa/l…
مرحله 5: پیشرفت ها
حساس ترین عملکرد در این پروژه عملکرد حذف پس زمینه است ، زیرا نیاز به استفاده از دوربینی دارد که قابلیت تنظیم نور را ندارد. ممکن است مجموعه بهتری از توابع در کتابخانه OpenCV وجود داشته باشد که بتواند این تنظیم نور را در نظر گرفته و پس زمینه را به آرامی حذف کند (مشابه صفحه سبز).
ما همچنین می توانیم از سایر توابع تشخیص چهره استفاده کنیم که ممکن است اجسامی با قابلیت های بیشتر به غیر از مختصات بازگشتی (x ، y) تولید کنند. شاید اجرای برنامه تشخیص چهره با قابلیت به خاطر سپردن چهره ها چندان دشوار نباشد.
عملکرد تاری را می توان با کنترل بصری توسط کاربر سفارشی سازی کرد. به عنوان مثال ، ممکن است کاربر بخواهد شدت اثر تار شدن را تنظیم کند یا ناحیه خاصی را در کادر انتخاب کند تا تار شود.
توصیه شده:
نحوه ایجاد رادار با استفاده از آردوینو برای پروژه علمی - بهترین پروژه های آردوینو: 5 مرحله
نحوه ایجاد رادار با استفاده از آردوینو برای پروژه علمی | بهترین پروژه های آردوینو: سلام دوستان ، در این مقاله آموزشی به شما نشان خواهم داد که چگونه یک سیستم راداری شگفت انگیز ایجاد کنید که با استفاده از آردوینو نانو ساخته شده است. این پروژه برای پروژه های علمی ایده آل است و اگر برنده شدن جایزه عالی باشد ، می توانید به راحتی با سرمایه گذاری و شانس بسیار کمتری این کار را انجام دهید
دریافت اعلان های ایمیل از پروژه های اینترنت اشیاء خود: 6 مرحله
دریافت اعلان های ایمیل از پروژه های اینترنت اشیا امیدوارم آنها را دیده باشید ، اگر نه من شما را به نمایه خود دعوت می کنم و آنها را بررسی می کنم. می خواستم وقتی یک متغیر اعلان هایی دریافت می کند
نحوه افزودن ویژگی های IOT به پروژه های خود: 5 مرحله
نحوه افزودن ویژگی های IOT به پروژه های خود: هیچ چیز بهتر از ایجاد یک پروژه DIY نیست که جایگزین یک محصول تجاری شود که به نظر شما مفید است. خوب در واقع ، چیزی بهتر از آن وجود دارد. افزودن قابلیت IOT به پروژه شما وقتی صحبت از اتوماسیون می شود ، مبتدیان معمولاً وحشت زده می شوند
LED های رنگین کمان برای پروژه های شما: 4 مرحله (همراه با تصاویر)
LED های رنگین کمان برای پروژه های شما: سلام به همه! من از این LED ها برای بسیاری از پروژه های تزئینی استفاده می کنم و نتیجه همیشه شگفت انگیز است ، بنابراین می خواهم تجربیات خود را با شما به اشتراک بگذارم ، دیدم بسیاری از مردم کنترلرهای نوار LED RGB را خریداری کرده و از 3 یا 5 استفاده می کنند تغییر حالت حالت فقط به
پروژه هالووین با جمجمه ، آردوینو ، LED های چشمک زن و چشم های پیمایش کننده - Maker ، MakerED ، MakerSpaces: 4 مرحله
پروژه هالووین با جمجمه ، آردوینو ، LED های چشمک زن و چشم های پیمایش کننده | Maker، MakerED، MakerSpaces: پروژه هالووین با جمجمه ، آردوینو ، LED های چشمک زن و اسکرول چشمان به زودی هالووین است ، بنابراین اجازه دهید یک پروژه ترسناک در حین برنامه نویسی و DIY ایجاد کنیم (کمی مشغول…). این آموزش برای افرادی طراحی شده است که چاپگر سه بعدی ندارند ، ما از پلاستیک 21 سانتی متری استفاده می کنیم