فهرست مطالب:

تشخیص رنگ ساده با استفاده از OpenCV: 6 مرحله
تشخیص رنگ ساده با استفاده از OpenCV: 6 مرحله

تصویری: تشخیص رنگ ساده با استفاده از OpenCV: 6 مرحله

تصویری: تشخیص رنگ ساده با استفاده از OpenCV: 6 مرحله
تصویری: پردازش تصویر در پایتون - 20 - تشخیص متن فارسی و انگلیسی 2024, ژوئن
Anonim
تشخیص رنگ ساده با استفاده از OpenCV
تشخیص رنگ ساده با استفاده از OpenCV

سلام! امروز من قصد دارم یک روش ساده برای تشخیص رنگ از یک فیلم زنده با استفاده از OpenCV و پایتون نشان دهم.

اساساً من فقط رنگ مورد نیاز را در قاب پس زمینه آزمایش می کنم یا نه و با استفاده از ماژول های OpenCV آن منطقه را ماسک می کنم و همزمان قاب را نمایش می دهم.

مرحله 1: فایل های سرصفحه

فایلهای سرصفحه
فایلهای سرصفحه

در اینجا من از دو فایل سرصفحه به نام cv2 و NumPy استفاده کرده ام. در اصل cv2 کتابخانه OpenCV است که همه فایلهای c ++ را که هنگام استفاده از دستورات در کدها مهم هستند بارگذاری می کند (شامل همه تعاریف است).

و Numpy یک کتابخانه پایتون است که برای ذخیره یک آرایه چند بعدی ضروری است. ما از مختصات محدوده رنگ خود برای ذخیره استفاده خواهیم کرد.

و numpy as np اساسا به کد ما کمک می کند تا با استفاده از np هر بار به جای numpy کمی کوتاه شود.

مرحله 2: ضبط ویدئو

ضبط ویدئو
ضبط ویدئو

این در هنگام استفاده از پایتون بسیار ساده است. در اینجا ما فقط باید ضبط ویدئو را روشن کنیم تا بتواند ضبط فریم ها را شروع کند.

اکنون مقدار داخل VideoCapture نشان دهنده دوربین است ، در مورد من دوربین به لپ تاپ من متصل است ، بنابراین 0.

برای دوربین ثانویه و غیره می توانید مشابه 1 بروید. VideoCapture برای آن شی ایجاد می کند.

مرحله 3: ضبط قاب و تعیین رنگ

ضبط قاب و تعیین رنگ
ضبط قاب و تعیین رنگ

اکنون در اینجا ما باید کاری انجام دهیم تا بتوانیم فریم فوری ویدئو را ضبط کنیم که به ما در استخراج تصویر کمک می کند و می توانیم بر اساس نیاز بر روی آن کار کنیم.

حلقه "while" به ما کمک می کند تا حلقه را به زمان مورد نیاز خود اجرا کنیم. اکنون "_، frame = cap.read ()" برای بررسی اعتبار قاب گرفته شده و ذخیره آن استفاده می شود. "cap.read () یک متغیر بولی است و اگر فریم به درستی خوانده شود true باز می گرداند و اگر هیچ فریمی دریافت نکنید هیچ خطایی نشان نمی دهد ، به سادگی None را دریافت خواهید کرد.

اکنون خط 11 و خط 12 اساساً محدوده رنگی را که باید تشخیص دهیم ، مشخص می کند. برای این کار ، من از رنگ آبی استفاده کرده ام.

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

برای این منظور ، من دو متغیر برای ذخیره مقادیر BGR پایین و مقادیر BGR بالا تعریف کرده ام.

مرحله 4: ماسک زدن و استخراج

ماسک زدن و استخراج
ماسک زدن و استخراج

اکنون وظیفه اصلی ماسک زدن قاب و استخراج رنگ قاب به میان می آید. من از دستورات از پیش تعریف شده موجود در کتابخانه در OpenCV برای انجام ماسک استفاده کردم. اساساً پوشاندن فرآیند حذف قسمتی از قاب است ، یعنی پیکسل هایی را که رنگ BGR آنها در محدوده رنگ تعریف شده نیست حذف می کنیم و این توسط cv2.inRange انجام می شود. پس از آن ، بسته به مقادیر پیکسل ، محدوده رنگ را بر روی تصویر پوشانده شده اعمال می کنیم و برای این کار از cv2.bitwise_and استفاده می کنیم. این بسته به ماسک و مقادیر محدوده رنگ ، به سادگی رنگها را به منطقه پوشانده شده اختصاص می دهد.

پیوند برای cv2. bitwise_and:

مرحله 5: در نهایت نمایش

بالاخره نمایش داده شد!
بالاخره نمایش داده شد!

در اینجا من از cv2.imshow () اصلی برای نمایش هر فریم به عنوان تصویر استفاده کرده ام. از آنجا که من داده های فریم را در متغیرها ذخیره کرده ام ، می توانم آنها را در imshow () بازیابی کنم. در اینجا من هر سه قاب اصلی ، نقاب دار و رنگی را نمایش داده ام.

حال باید از حلقه while خارج شویم. برای این کار ، ما به سادگی می توانیم cv2.wait. Key () را پیاده سازی کنیم. اساساً زمان انتظار را قبل از پاسخگویی بیان می کند. بنابراین اگر صفر را رد کنید بی نهایت منتظر می ماند و 0xFF می گوید معماری 64 بیت است. "ord ()" کاراکتری را مشخص می کند که با فشردن آن دستور break در if اجرا می شود و از حلقه خارج می شود.

سپس cap.release () ضبط کننده ویدیو را می بندد و cv2.destroyAllWindows () همه پنجره های باز شده را می بندد.

اگر مشکلی دارید ، لطفاً به من اطلاع دهید.

پیوند به کد منبع:

توصیه شده: