در مطلب متد subtract در OpenCV برای تفریق دو تصویر در مورد متد ()subtract صحبت کردیم که اولین گام در بررسی برابر و معادل بودن دو تصویر است. دومین گام استفاده از متد ()split برای جدا سازی کانال های تصویر در غالب متغیرهایی است که هر کدام از این متغیرها به صورت یک ماتریس جدید هستند که هر یک تنها مقدار پیکسل های یک کانال را در خود دارند.

متد ()cvtColor برای تبدیل فضای رنگ

در کد زیر تصویری (منبع تصویر) خوانده شده و سپس توسط متد ()cvtColor ماتریس تصویر اصلی را از فضای BGR به RGB تبدیل کرده ایم، زیرا همانطور که بارها گفته ایم، در OpenCV به صورت پیش فرض فضای رنگ RGB به صورت وارونه BGR وجود دارد، پس لازم است حتما آنرا از فضای BGR به RGB تبدیل کنید.

آشنایی با مفاهیم ابتدایی در OpenCV – تصویر خاکستری و رنگی

در کد بالا در متد ()cvtColor آرگومان اول نام متغیری است که به ماتریس یک تصویر اشاره می کند که می خواهیم فضای رنگ آنرا تبدیل کنیم. آرگومان دوم نوع تبدیل فضای رنگ را تعیین می کند. به طور معمول می خواهیم تصویر رنگی را به تصویر خاکستری (Grayscale) تبدیل کنیم، پس باید بر اساس نیاز از cv2.COLOR_BGR2GRAY یا cv2.COLOR_RGB2GRAY استفاده کنیم. گاهی لازم است فضای رنگ BGR را به RGB تبدیل کنیم (به طور مثال در همین مطلب)، پس باید از cv2.BGR2RGB استفاده کنیم.

در برخی از کاربردها، لازم است فضای رنگ BGR را به HSV تبدیل کنیم. به طور مثال در مطلب های پیش رو در مورد تشخیص لبه ها (Edge Detection)، تشخیص گوشه ها (Cornner Detection)، مواردی مانند تشخیص رنگ ها (Color Detection) در تصویر و ویدیو ها و یا مواردی مانند تشخیص خط و دایره در تصویر و ویدیو از تبدیل BGR به HSV استفاده می کنیم.

متد ()split برای جدا سازی کانال های فضای رنگ

پس از آنکه تبدیل COLOR_BGR2RGB را انجام دادیم، مطابق قطعه کد زیر باید کانال های فضای رنگ RGB را به ترتیب درون متغیرهای مجزایی ذخیره کنیم. توجه کنید که هر کدام از سه متغیر r و g و b در کد زیر به صورت یک ماتریس هستند که تنها مقدار پیکسل هر یک از کانال های R و G و B را در خود نگه می دارند.

لطفا روی تصویرها کلیک کنید تا از عنوان پنجره آنها متوجه شوید که تصویر مربوط به کدام کانال است.

متد ()merge برای ترکیب کانال های فضای رنگ

پس از اینکه توسط متد ()split توانستیم کانال های یک تصویر رنگی را به متغیرهای جداگانه ای تبدیل کنیم، حال می توانیم این کانال های جدا شده را با هم ترکیب (ادغام – Merge) کنیم تا تصویر اولیه با همان رنگ بندی ایجاد شود. توجه کنید در کدهای زیر دو بار متد ()merge فراخوانی شده است. بار اول یک تاپل از نام متغیرهای کانال ها به ترتیب BGR به آن فرستاده شده است، که این باعث ایجاد همان تصویر اولیه می شود. بار دوم ترتیب به صورت RGB است، که می بینید تصویری با رنگ بندی متفاوت ایجاد شده است.

لطفا روی تصویرها کلیک کنید تا از عنوان پنجره آنها متوجه شوید که تصویر مربوط به ترتیب ادغام است.


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