Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> C++

C++ में OpenCV का उपयोग करके मल्टीचैनल छवि से पिक्सेल मान कैसे पढ़ें?


हमने तीन वेरिएबल घोषित किए हैं जिनके नाम-'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...

इस प्रोग्राम को चलने में कई मिनट लगते हैं। यह विभिन्न चैनलों से प्रत्येक पिक्सेल मान पढ़ता है। इसलिए इसे पूरा परिणाम दिखाने में कुछ मिनट लगते हैं।


  1. OpenCV में C++ का उपयोग करके बाइनरी इमेज कैसे बनाएं? OpenCV में C++ का उपयोग करके बाइनरी इमेज कैसे बनाएं?

    बाइनरी इमेज केवल एक डिजिटल इमेज है जो दो रंगों, काले और सफेद को दर्शाती है। इमेज प्रोसेसिंग के दृष्टिकोण से, बाइनरी इमेज में दो संभावित मानों वाले पिक्सेल होते हैं - शून्य और एक। जब पिक्सेल का मान 0 होता है, तो यह शुद्ध काले रंग को दर्शाता है। जब पिक्सेल का मान 1 होता है, तो इसका मतलब शुद्ध सफेद रंग

  1. OpenCV में C++ का उपयोग करके इमेज के चैनलों की संख्या कैसे गिनें? OpenCV में C++ का उपयोग करके इमेज के चैनलों की संख्या कैसे गिनें?

    इस विषय में, हम समझेंगे कि इमेज के चैनलों की संख्या कैसे पता करें। प्रोग्राम चलाने के बाद, चैनलों की संख्या कंसोल विंडो में दिखाई जाएगी। चैनलों की संख्या प्राप्त करने के लिए, हमने OpenCV की channels() नामक एक क्लास का उपयोग किया है। जब हम इमेज मैट्रिक्स को channels() क्लास के ऑब्जेक्ट के रूप में पास

  1. Java OpenCV लाइब्रेरी का उपयोग करके इमेज की ब्राइटनेस कैसे बदलें? Java OpenCV लाइब्रेरी का उपयोग करके इमेज की ब्राइटनेस कैसे बदलें?

    org.opencv.core.Mat क्लास की convertTo() मेथड दी गई मैट्रिक्स पर आवश्यक गणना करती है ताकि इमेज के कंट्रास्ट और ब्राइटनेस को बदला जा सके। यह मेथड 4 पैरामीटर्स स्वीकार करती है −mat − परिणाम रखने के लिए खाली मैट्रिक्स जिसका आकार और प्रकार स्रोत मैट्रिक्स के समान हो।rtype − आउटपुट मैट्रिक्स के प्रकार को