RGB इमेज में तीन चैनल होते हैं - लाल, हरा और नीला। वह रंग स्थान जहां लाल, हरे और नीले चैनल इमेज को दर्शाते हैं, RGB रंग स्थान कहलाता है। OpenCV में, RGB के बजाय BGR क्रम का उपयोग किया जाता है। इसका मतलब है कि पहला चैनल नीला है, दूसरा चैनल हरा है, और तीसरा चैनल लाल है। RGB इमेज को अलग-अलग चैनलों में विभाजित करने के लिए, हमें 3 चैनलों का एक मैट्रिक्स परिभाषित करने की आवश्यकता होती है। हम 'Mat different_Channels[3]' का उपयोग करके तीन-चैनल मैट्रिक्स को परिभाषित करते हैं।
इसके बाद, हम लोड की गई इमेज को OpenCV 'split()' फ़ंक्शन का उपयोग करके विभाजित करते हैं। इस फ़ंक्शन का प्रारूप 'split(Source Matrix, Destination Matrix)' है। यह फ़ंक्शन स्रोत मैट्रिक्स की इमेज को चैनलों में विभाजित करता है और उन्हें गंतव्य मैट्रिक्स में सहेजता है। यह लाइन ऑपरेट कर रही है - 'split(myImage, different_Channels);'
स्प्लिट फ़ंक्शन ने पहले से ही नीले, हरे और लाल चैनल को 'different_channels' मैट्रिक्स में लोड कर दिया है। निम्नलिखित लाइनों का उपयोग करके, हम अलग-अलग चैनलों में संग्रहीत इमेज को नए मैट्रिक्स में लोड करते हैं।
Mat b = different_Channels[0]; // नीला चैनल लोड करना Mat g = different_Channels[1]; // हरा चैनल लोड करना Mat r = different_Channels[2]; // लाल चैनल लोड करना
और अंत में हमने प्रत्येक चैनल को निम्नलिखित लाइनों का उपयोग करके अलग-अलग दिखाया -
imshow("Blue Channel", b);
imshow("Green Channel", g);
imshow("Red Channel", r);
इस तरह हम किसी इमेज को उसके चैनलों में विभाजित कर सकते हैं।
निम्नलिखित प्रोग्राम RGB इमेज को नीले, हरे और लाल चैनल में विभाजित करता है।
उदाहरण
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
using namespace std;
int main(int argc, const char** argv) {
Mat myImage;
Mat different_Channels[3];
myImage = imread("RGB.png");
split(myImage, different_Channels);
Mat b = different_Channels[0];
Mat g = different_Channels[1];
Mat r = different_Channels[2];
imshow("Blue Channel", b);
imshow("Green Channel", g);
imshow("Red Channel", r);
imshow("Actual_Image", myImage);
waitKey(0);
destroyAllWindows();
return 0;
}
आउटपुट
