فهرست مطالب:

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

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

تصویری: تشخیص رنگ در پایتون با استفاده از OpenCV: 8 مرحله
تصویری: پردازش تصویر در پایتون - 13 - پردازش ویدئو و تشخیص رنگ 2024, جولای
Anonim
Image
Image

سلام! این دستورالعمل برای راهنمایی نحوه استخراج یک رنگ خاص از یک تصویر در پایتون با استفاده از کتابخانه openCV استفاده می شود. اگر تازه با این تکنیک آشنا شدید ، نگران نباشید ، در پایان این راهنما می توانید برنامه تشخیص رنگ خود را برنامه ریزی کنید.

در زیر توابع یا ما می توانیم تکنیک هایی را که شما یاد خواهید گرفت ، ذکر کنیم ،

1. نحوه خواندن تصویر

2. نحوه ایجاد نوار آهنگ

3. نحوه تنظیم مقدار Hue ، Saturation و مقدار یک تصویر با استفاده از نوارهای آهنگ

4. و سپس خروجی نهایی شما وجود خواهد داشت

می توانید ویدیوی خروجی را که در زیر ضمیمه کرده ام مشاهده کنید.

بنابراین بیایید شروع کنیم

تدارکات

  • پایتون 3
  • کتابخانه openCV
  • کتابخانه بی حس

مرحله 1: وارد کردن کتابخانه ها

واردات کتابخانه ها
واردات کتابخانه ها

همانطور که در تصویر نشان داده شده است ، فراری زرد رنگ است و ما برنامه ریزی می کنیم که فقط رنگ زرد را از آن تصویر استخراج کنیم

اولین قدم وارد کردن کتابخانه های ما خواهد بود

1. شامل کتابخانه openCV. در پایتون cv2 نامیده می شود

2. شامل کتابخانه numpy به عنوان np. "به عنوان" به ما اجازه می دهد تا به عنوان np بی حس کنیم بنابراین نیازی به نوشتن numpy بارها و بارها نیست

مرحله 2: ایجاد نوارهای آهنگ

ایجاد نوارهای آهنگ
ایجاد نوارهای آهنگ

نوارهای آهنگ برای تنظیم مقدار Hue ، Saturation و Value در یک تصویر ایجاد می شوند.

cv2.namedWindow ("TrackBars") این خط کد برای ایجاد یک پنجره خروجی جدید استفاده می شود و نام پنجره به عنوان TrackBars (هر نامی که بخواهید می توانید وارد کنید)

cv2.resizeWindow ("TrackBars"، 600، 250) این عملکرد برای تغییر اندازه پنجره استفاده می شود. "TrackBars" برای کدام پنجره است که می خواهید اندازه آن را تغییر دهید زیرا من می خواستم اندازه پنجره TrackBars را تغییر دهم ، من آن نام را نوشتم. به دنبال دو عدد صحیح. این دو عدد صحیح عبارتند از عرض و ارتفاع. برای تغییر اندازه می توانید با این دو عدد بازی کنید

مرحله 3: ایجاد TrackBars برای رنگ ، اشباع و ارزش

ایجاد TrackBars برای رنگ ، اشباع و ارزش
ایجاد TrackBars برای رنگ ، اشباع و ارزش
ایجاد TrackBars برای رنگ ، اشباع و ارزش
ایجاد TrackBars برای رنگ ، اشباع و ارزش

اکنون ما در مجموع 6 TrackBars برای رنگ ، اشباع و ارزش ایجاد خواهیم کرد. هر کدام دارای دو مورد یعنی 1 برای حداقل و 1 برای حداکثر خواهد بود. ما از تابع createTrackbar OpenCV استفاده خواهیم کرد. ابتدا نحو این تابع را خواهیم دید.

cv2.createTrackbar ("WINDOWNAME" ، "MAINWINDOWNAME" ، "RANGE"). این ممکن است گیج کننده باشد اما نگران نباشید ما هر مرحله را طی می کنیم. یک نکته را در نظر داشته باشید که در openCV مقادیر رنگ 179 ، اشباع 255 و مقدار 255 است

1. ایجاد TrackBar برای hue min:

cv2.createTrackbar ("Hue min" ، "TrackBars" ، 0 ، 179 ، خالی)

در این Hue min نام نوار آهنگ ، TrackBars پنجره اصلی ، 0 موقعیتی است که نوار لغزنده ما روی آن قرار دارد و 179 محدوده ای است که نشان می دهد سیلدر از 0-179 حرکت می کند

2. ایجاد TrackBar برای hue max:

cv2.createTrackbar ("حداکثر رنگ" ، "TrackBars" ، 179 ، 179 ، خالی)

در این Hue max نام نوار آهنگ ، TrackBars پنجره اصلی ، 179 موقعیتی است که نوار لغزنده ما روی آن قرار دارد و 179 حداکثر دامنه به این معنی است که سیلدر از 179-0 حرکت می کند

3. به طور مشابه مراحل مربوط به sat min ، sat max ، val min و val max را همانطور که در تصویر نشان داده شده است تکرار کنید

تصویر با پس زمینه سفید تصویر خروجی است. نوارهای آهنگ شما اینگونه ظاهر می شوند

مرحله 4: نحوه خواندن و تغییر اندازه تصویر

نحوه خواندن و تغییر اندازه تصویر
نحوه خواندن و تغییر اندازه تصویر

cv2.imread () به شما امکان می دهد تصویر را بخوانید. یک فکر مهم باید به خاطر داشته باشید که محل عکس شما باید در همان پوشه ای باشد که برنامه ذخیره شده است. ما حلقه while را وارد می کنیم زیرا باید تا زمان خواندن تصویر اجرا شود یا می توانیم بگوییم تا زمانی که شرط درست شود

img = cv2.imread ("ferrari.jpg")

  • در این قسمت من یک نام متغیر "img" ایجاد کرده ام که در آن تصویر را ذخیره می کنم
  • داخل cv2.imread نام تصویر را با پسوند آن در داخل دو نقل قول بنویسید

برای تغییر اندازه تصویر از تابع cv2.resize استفاده می کنیم. این قسمت اختیاری است ، اگر می خواهید اندازه را تغییر دهید ، می توانید از این عملکرد استفاده کنید

در داخل cv2.resize ابتدا نام متغیری را که تصویر در آن ذخیره شده است و سپس عرض و ارتفاع آن را بنویسید

مرحله 5: خواندن مقادیر نوار آهنگ برای اعمال آن بر روی تصویر

خواندن مقادیر نوار آهنگ برای اعمال آن بر روی تصویر
خواندن مقادیر نوار آهنگ برای اعمال آن بر روی تصویر
خواندن مقادیر نوار آهنگ برای اعمال آن بر روی تصویر
خواندن مقادیر نوار آهنگ برای اعمال آن بر روی تصویر

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

بیایید با آن قسمت شروع کنیم…

h_min = cv2.getTrackbarPos ("Hue min" ، "TrackBars")

در عبارت بالا من یک نام متغیر h_min ایجاد می کنم که در آن مقدار Hue min را ذخیره می کنم. بنابراین در داخل cv2.getTrackbarPos آرگومان اول "Hue min" خواهد بود زیرا من مقادیر hue min را می خواهم (املای آن باید دقیقاً مشابه تابع createTrackbar باشد) و آرگومان دوم نام پنجره نوار آهنگ است که به آن تعلق دارد.

  • همان فرآیند را برای h_max و بقیه توابع همانطور که در تصویر بالا نشان داده شده است تکرار کنید و سپس همه مقادیر را با استفاده از print () چاپ کنید.
  • خروجی در تصویر دوم نشان داده شده است. در حال چاپ مقادیر h_min ، h_max ، s_min ، s_max ، v_min ، s_max است

مرحله 6: نمایش تصویر و تنظیم حد بالا و پایین

نمایش تصویر و تنظیم حد بالا و پایین
نمایش تصویر و تنظیم حد بالا و پایین

در حال حاضر ما حداقل و حداکثر مقدار رنگ ، اشباع و مقدار را داریم که از این مقدار برای فیلتر کردن تصویر استفاده می کنیم تا بتوانیم خروجی رنگ خاص یک تصویر را انجام دهیم.

ما برای این کار با استفاده از تابع cv2.inRange یک ماسک ایجاد می کنیم. و قبل از آن ما حد بالا و پایین رنگ ، اشباع و ارزش را تعیین می کنیم

بنابراین یک نام متغیر "پایین" ایجاد کنید و با استفاده از تابع numpy array محدوده min را برای هر 3 مورد به صورت زیر تنظیم کنید

پایین = np.array ([h_min ، s_min ، v_min])

همین مرحله را برای قسمت بالا تکرار کنید

بالا = np.array ([h_max، s_max، v_max])

حالا ما یک ماسک به شکل زیر ایجاد می کنیم

mask = cv2.inRange (تغییر اندازه ، پایین ، بالا) در داخل cv2.inRang اولین آرگومان متغیری است که تصویر نهایی من در آن ذخیره می شود ، آرگومان دوم حد پایین و آرگومان سوم حد بالا خواهد بود.

حالا ما قصد داریم تصویر و ماسک اصلی را نمایش دهیم. برای نمایش از تابع cv2.imshow () استفاده می کنیم

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

به همین ترتیب مراحل ماسک را تکرار کنید

cv2.imshow ("خروجی" ، ماسک)

مرحله 7: اکنون مرحله نهایی

اکنون مرحله نهایی
اکنون مرحله نهایی

در آخرین مرحله رنگ خودرو و صفحه نمایش را استخراج می کنیم.

من یک نتیجه نام متغیر ایجاد کرده ام. دوباره می توانید هر نامی را که می خواهید بگذارید. بنابراین ما از تابع cv2.bitwise_and () استفاده می کنیم که در آن به تصاویر اضافه می کنیم و یک تصویر جدید ایجاد می کنیم. و هر جا پیکسل های هر دو تصویر وجود داشته باشد ، بله یا "1" در نظر گرفته می شود.

result = cv2.bitwise_and (تغییر اندازه ، تغییر اندازه ، mask = mask)

  • در این اولین آرگومان تصویر ما خواهد بود
  • آرگومان دوم نیز تصویر اصلی ما خواهد بود اما پس از آن ماسکی اعمال می شود که قبلاً ایجاد کرده بودیم
  • و در نهایت فقط با استفاده از تابع imshow نتیجه را نمایش دهید

فقط آخرین مرحله را کپی کنید ، فقط یک تاخیر است و می توانید با فشار دادن "a" در صفحه کلید از پنجره خروجی خارج شوید

مرحله 8: خروجی های نهایی

توصیه شده: