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

C++ में OpenCV का उपयोग करके रंग का पता लगाएं


हम समझेंगे कि विशिष्ट रंग का पता कैसे लगाएं और रंग के आधार पर ऑब्जेक्ट को ट्रैक कैसे करें। रंग पहचान और रंग पहचान आधारित ट्रैकिंग सिस्टम का प्रदर्शन पर्यावरण पर निर्भर करता है।

यदि आप कमरे की रोशनी बदलते हैं या पृष्ठभूमि का रंग बदलते हैं, तो रंग पहचान पर महत्वपूर्ण प्रभाव पड़ेगा।

C++ में OpenCV का उपयोग करके रंग का पता लगाने को दर्शाने वाला निम्नलिखित प्रोग्राम।

उदाहरण

#include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> using namespace std; using namespace cv; int main(int argc, char** argv) {    VideoCapture video_load(0);//डिफ़ॉल्ट कैमरे से वीडियो कैप्चर करना//    namedWindow("Adjust");//छवि दिखाने के लिए विंडो घोषित करना//    int Hue_Lower_Value = 0;//प्रारंभिक ह्यू मान (निचला)//    int Hue_Lower_Upper_Value = 22://प्रारंभिक ह्यू मान (ऊपरी)//    int Saturation_Lower_Value = 0;//प्रारंभिक सैचुरेशन (निचला)//    int Saturation_Upper_Value = 255;//प्रारंभिक सैचुरेशन (ऊपरी)//    int Value_Lower = 0://प्रारंभिक वैल्यू (निचला)//    int Value_Upper = 255://प्रारंभिक सैचुरेशन (ऊपरी)//    createTrackbar("Hue_Lower", "Adjust", &Hue_Lower_Value, 179);//निचले ह्यू के लिए ट्रैकबार//    createTrackbar("Hue_Upper", "Adjust", &Hue_Lower_Upper_Value, 179);//निचले-ऊपरी ह्यू के लिए ट्रैकबार//    createTrackbar("Sat_Lower", "Adjust", &Saturation_Lower_Value, 255);//निचले सैचुरेशन के लिए ट्रैकबार//    createTrackbar("Sat_Upper", "Adjust", &Saturation_Upper_Value, 255);//उच्च सैचुरेशन के लिए ट्रैकबार//    createTrackbar("Val_Lower", "Adjust", &Value_Lower, 255);//निचले वैल्यू के लिए ट्रैकबार//    createTrackbar("Val_Upper", "Adjust", &Value_Upper, 255);//उच्च वैल्यू के लिए ट्रैकबार//    while (1) {       Mat actual_Image;//वास्तविक छवि लोड करने के लिए मैट्रिक्स//       bool temp = video_load.read(actual_Image);//वीडियो स्ट्रीम से मैट्रिक्स में वास्तविक छवि लोड करना//       Mat convert_to_HSV;//परिवर्तित छवि संग्रहीत करने के लिए मैट्रिक्स घोषित करना//       cvtColor(actual_Image, convert_to_HSV, COLOR_BGR2HSV);//BGR छवि को HSV में परिवर्तित करना और इसे convert_to_HSV मैट्रिक्स में संग्रहीत करना//       Mat detection_screen;//विंडो के लिए मैट्रिक्स घोषित करना जहां ऑब्जेक्ट का पता लगाया जाएगा//       inRange(convert_to_HSV,Scalar(Hue_Lower_Value,Saturation_Lower_Value, Value_Lower),Scalar(Hue_Lower_Upper_Value,Saturation_Upper_Value, Value_Upper), detection_screen);//ट्रैकबार के संशोधित मान लागू करना//       erode(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//अग्रभूमि से छोटी वस्तुओं को हटाने के लिए मॉर्फोलॉजिकल ओपनिंग//       dilate(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//अग्रभूमि से छोटी वस्तु को हटाने के लिए मॉर्फोलॉजिकल ओपनिंग//       dilate(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//अग्रभूमि में छोटे छेद भरने के लिए मॉर्फोलॉजिकल क्लोजिंग//       erode(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//अग्रभूमि में छोटे छेद भरने के लिए मॉर्फोलॉजिकल क्लोजिंग//       imshow("Threesholded Image", detection_screen);//पहचानी गई वस्तु दिखाना//       imshow("Original", actual_Image);//वास्तविक छवि दिखाना//       if (waitKey(30) == 27){ //यदि esc दबाया जाता है तो लूप तोड़ें//          break;       }    }    return 0; }

आउटपुट

C++ में OpenCV का उपयोग करके रंग का पता लगाएं


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

    डिजिटल इमेज पिक्सेल से बनी होती हैं। OpenCV का उपयोग करके, पिक्सेल के मान को पढ़ना आसान है। हालांकि, यदि हम पिक्सेल मान प्राप्त करना चाहते हैं, तो हमें सिंगल चैनल को अलग से संभालना होगा। यहां हम cimage नामक मैट्रिक्स में एक इमेज लोड कर रहे हैं, और फिर cvtColor(cimage, img, COLOR_BGR2GRAY); का उपयोग

  1. OpenCV में C++ का उपयोग करके रंग स्थान कैसे परिवर्तित करें? OpenCV में C++ का उपयोग करके रंग स्थान कैसे परिवर्तित करें?

    रंग स्थान रंगों को दर्शाने का मॉडल है। रंगों का वर्णन करने के विभिन्न तरीके हैं। उदाहरण के लिए, RGB, CYMK, HSV, ग्रेस्केल आदि। यहां, हमने imgproc.hpp नामक एक नए हेडर का उपयोग किया है। यह imgproc.hpp इमेज प्रोसेसिंग का संक्षिप्त नाम है। रंग स्थान परिवर्तित करने के लिए, हमें OpenCV के cvtColor() फ़ंक्

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

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