ایجاد Trackbar در OpenCV

درمطلب های پیشین در مورد متدهایی صحبت کردیم که توسط آنها می توانستیم تصویرها را بخوانیم، نمایش دهیم و یا بر روی دیسک بنویسیم. توسط متد ()imread می توانیم تصویر را بخوانیم و توسط متد ()imwrite می توانیم ماتریس تصویر را به صورت یک فایل تصویری روی دیسک بنویسیم. توسط متد ()namedWindow می توانیم نامی را برای پنجره ای مشخص کنیم و سپس می توانیم از این نام در متد ()imshow استفاده کنیم تا تصویر را نمایش دهیم. در نهایت توسط متد ()destroyWindow برنامهخودکار می تواند تک پنجره و توسط متد ()destroyAllWindows تمامی پنجره ها را ببندد.

خواندن و نمایش و ذخیره سازی تصویر در OpenCV

کشیدن شکل در OpenCV با پایتون

متدهای ()createTrackbar و ()getTrackbarPos به ترتیب برای ایجاد Trackbar و دریافت مقدار کنونی Trackbar استفاده می شود. در واقع یک Trackbar برای تعیین محدوده ای (Range) از اعداد استفاده می شود که با تغییر این محدوده می توانیم بر روی تصویر تغییراتی را انجام دهیم. به طور مثال می توانیم روشنایی و کنتراست تصویر را تغییر دهیم. بنابراین باید هر لحظه مقدار کنونی Trackbar را بدانیم، پس برای این منظور از متد ()getTrackbarPos استفاده می کنیم.

یکی دیگر از کاربردهایی که در مطلب های پیش رو در مورد آن صحبت می کنیم، تشخیص اشیا از طریق رنگ آنها است. به طور مثال می خواهیم تمامی اشیا آبی رنگ درون تصویر یا ویدیو را پیدا کنیم، پس لازم است که یک حد پایین (Lower Range) و حد بالایی (Upper Range) از مقدارها را پیدا کنیم تا بتوانیم رنگ ها را تشخیص دهیم. برای این کار دو راه وجود دارد، یکی تعیین دستی درون خود برنامه و دیگری تعیین دستی توسط Trackbar ها است.

تشخیص اشیا توسط رنگ ها توسط کتابخانه OpenCV و پایتون

آرگومان اول متد ()createTrackbar یک رشته است که نام Trackbar را تعیین می کند، آرگومان دوم نام پنجره ای است که پیش از این توسط متد ()namedWindow ایجاد شده است. آرگومان سوم حد پایین و آرگومان چهارم حد بالای محدوده را تعیین می کند. در کدهای زیر چون می خواهیم مقدارهای سه کانال R و G و B را تعیین کنیم، پس محدوده میان عدد صفر (آرگومان سوم) تا عدد ۲۵۵ (آرگومان چهارم) است.

آرگومان آخر نیز نام یک تابع یا به عبارت دیگر Callback است که هر زمان که محدوده Trackbar تغییر کند، این تابع صدا زده می شود. در کدهای زیر نام این تابع nothing است ولی توجه کنید در تعریف آن عبارت pass وجود دارد و به این معنی است که این تابع هیچ کاری انجام نمی دهد و تنها برای این تعریف و استفاده شده است که لازمه متد ()createTrackbar است.

در کدهای زیر توسط متد ()getTrackbarPos مقدار کنونی هر کدام از Trackbar ها را درون متغیرهای r و g و b و s ذخیره می کنیم. آرگومان اول متد نام یک Trackbar است که پیش از این تعریف شده است و آرگومان دوم نام پنجره ای است که Trackbar در آن تعریف شده است. توجه کنید چهار Trackbar تعریف شده است که سه تای آنها دارای محدوده عددی میان صفر تا ۲۵۵ است و چهارمی یعنی switch دارای دو مقدار 0 و 1 است، زمانی که Trackbar روی OFF باشد، پس مقدار کنونی صفر و غیر فعال بودن است و تنها رنگ سیاه یا پیکسل های با مقدار صفر نشان داده می شود ولی اگر ON باشد، پس مقدار کنونی یک و فعال بودن است و سه رنگ وارونه متغیرهای b و g و r نشان داده می شوند.

دانلود سورس این مطلب Create Trackbar Opencv

کد کامل برنامه