किसी विशिष्ट पिक्सेल का मान पढ़ने के लिए, हम 'at' या 'डायरेक्ट एक्सेस' मेथड का उपयोग कर सकते हैं। यहां हम दोनों दृष्टिकोण सीखेंगे।
आइए 'at' मेथड से शुरू करते हैं। निम्नलिखित प्रोग्राम एक RGB इमेज में (10, 29) पर स्थित पिक्सेल मान को पढ़ता है।
उदाहरण
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main() {
Mat image;
image = imread("sky.jpg");
int x = image.at<Vec3b>(10, 29)[0];
int y = image.at<Vec3b>(10, 29)[1];
int z = image.at<Vec3b>(10, 29)[2];
cout << "Value of blue channel:" << x << endl;
cout << "Value of green channel:" << y << endl;
cout << "Value of red channel:" << z << endl;
system("pause");
return 0;
}
आउटपुट

प्रोग्राम का परिणाम कंसोल विंडो में दिखाई देगा। निम्नलिखित तीन लाइनों का उपयोग करके, हम तीन अलग-अलग चैनलों के पिक्सेल फॉर्म मान प्राप्त कर रहे हैं।
int x = image.at<Vec3b>(10, 29)[0]; int y = image.at<Vec3b>(10, 29)[1]; int z = image.at<Vec3b>(10, 29)[2];
पहली लाइन में, हम पहले चैनल (नीला) के (10, 29) पर स्थित पिक्सेल का मान पढ़ते हैं और मान को 'x' वेरिएबल में संग्रहीत करते हैं। दूसरी और तीसरी लाइन क्रमशः दूसरे और तीसरे चैनल का मान संग्रहीत करती है। अब आइए सीखते हैं कि 'डायरेक्ट एक्सेस' मेथड का उपयोग करके पिक्सेल मान कैसे पढ़ें।
निम्नलिखित प्रोग्राम (10, 29) पर स्थित पिक्सेल मान को सीधे पढ़ता है -
उदाहरण
#include <iostream>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
int main() {
Mat_<Vec3b> image;
image = imread("sky.jpg");
Vec3b x = image(10, 29);
cout << x << endl;
system("pause");
return 0;
}
आउटपुट
