हमने तीन वेरिएबल घोषित किए हैं जिनके नाम-'blue_Channel', 'green_channel' और 'red_channel' हैं। इन वेरिएबल्स का उद्देश्य पिक्सेल मानों को सहेजना है। हमने इन वेरिएबल्स का उपयोग 'for loops' के अंदर किया है। फिर हमने 'color_Image_Matrix' नामक एक मैट्रिक्स घोषित की।
इस विधि का सिंटैक्स है:
blue_Channel = color_image_Matrix.at<Vec3b>(i, j)[0];
हमने एक BGR छवि का उपयोग किया। इसमें तीन चैनल हैं। ये चैनल विशिष्ट क्रम बनाए रखते हैं, color_image_Matrix.at<Vec3b> (i, j) (i,i) पर स्थित पिक्सेल मानों को दर्शाता है और [0] पहले चैनल को दर्शाता है। उदाहरण के लिए, यदि हम पंक्ति को निम्नानुसार लिखते हैं:
blue_Channel=color_image_Matrix.at<Vec3b> (30, 35) [0];
इसका मतलब है कि वेरिएबल 'blue_Channel' में (30, 35) पर स्थित पहले चैनल का पिक्सेल मान होगा। इस तरह हम OpenCV का उपयोग करके पिक्सेल मानों तक पहुंच सकते हैं।
निम्नलिखित प्रोग्राम विभिन्न RGB छवियों के पिक्सेल मानों को पढ़ता है और विभिन्न चैनल पिक्सेल के मान को कंसोल विंडो में प्रदर्शित करता है।
उदाहरण
#include<iostream>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main() {
int blue_Channel;
int green_Channel;
int red_Channel;
Mat color_image_Matrix; //छवि लोड करने के लिए मैट्रिक्स घोषित करना//
color_image_Matrix = imread("colors.jpg"); //मैट्रिक्स में छवि लोड करना//
//नीले चैनल के पिक्सेल मान पढ़ने के लिए लूप की शुरुआत//
for (int i = 0; i < color_image_Matrix.rows; i++)//पंक्तियों के लिए लूप//
{
for (int j = 0; j < color_image_Matrix.cols; j++)
{
//स्तंभों के लिए लूप//
blue_Channel = color_image_Matrix.at<Vec3b>(i, j)[0];
//पहले चैनल का मान पढ़ने के लिए। यहां नीला चैनल पहला चैनल है//
cout << "Value of pixel of blue channel" << "(" << i << "," << j << ")" << "="
<< blue_Channel << endl; //कंसोल विंडो में मान दिखाना//
}
}
//नीले चैनल के पिक्सेल मान पढ़ने के लिए लूप का अंत//
//हरे चैनल के पिक्सेल मान पढ़ने के लिए लूप की शुरुआत//
for (int i = 0; i < color_image_Matrix.rows; i++)//पंक्तियों के लिए लूप//
{
for (int j = 0; j < color_image_Matrix.cols; j++)//स्तंभों के लिए लूप//
{
green_Channel = color_image_Matrix.at<Vec3b>(i, j)[1];
//पहले चैनल का मान पढ़ने के लिए। यहां हरा चैनल पहला चैनल है//
cout << "Value of pixel of green channel" << "(" << i << "," << j << ")" << "=" << blue_Channel << endl;//कंसोल विंडो में मान दिखाना//
}
}
//हरे चैनल के पिक्सेल मान पढ़ने के लिए लूप का अंत//
//लाल चैनल के पिक्सेल मान पढ़ने के लिए लूप की शुरुआत//
for (int i = 0; i < color_image_Matrix.rows; i++)//पंक्तियों के लिए लूप//
{
for (int j = 0; j < color_image_Matrix.cols; j++)//स्तंभों के लिए लूप//
{
red_Channel = color_image_Matrix.at<Vec3b>(i, j)[2];
//पहले चैनल का मान पढ़ने के लिए। यहां लाल चैनल पहला चैनल है//
cout << "Value of pixel of red channel" << "(" << i << "," << j << ")" << "=" << blue_Channel << endl; //कंसोल विंडो में मान दिखाना//
}
}
//लाल चैनल के पिक्सेल मान पढ़ने के लिए लूप का अंत//
if (waitKey(0)==27);
cout << "Image read successfully...!";
return 0;
}
आउटपुट
Image read successfully...
इस प्रोग्राम को चलने में कई मिनट लगते हैं। यह विभिन्न चैनलों से प्रत्येक पिक्सेल मान पढ़ता है। इसलिए इसे पूरा परिणाम दिखाने में कुछ मिनट लगते हैं।