हम समझेंगे कि रंग के आधार पर विशिष्ट रंग और ट्रैक ऑब्जेक्ट का पता कैसे लगाया जाता है। कलर डिटेक्शन और कलर डिटेक्शन आधारित ट्रैकिंग सिस्टम का प्रदर्शन पर्यावरण पर निर्भर है।
यदि आप कमरे की रोशनी बदलते हैं या यदि आप पृष्ठभूमि का रंग बदलते हैं, तो रंग पहचान पर महत्वपूर्ण प्रभाव पड़ेगा।
निम्न प्रोग्राम दर्शाता है कि 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);//capturing video from default camera// namedWindow("Adjust");//declaring window to show the image// int Hue_Lower_Value = 0;//initial hue value(lower)// int Hue_Lower_Upper_Value = 22;//initial hue value(upper)// int Saturation_Lower_Value = 0;//initial saturation(lower)// int Saturation_Upper_Value = 255;//initial saturation(upper)// int Value_Lower = 0;//initial value (lower)// int Value_Upper = 255;//initial saturation(upper)// createTrackbar("Hue_Lower", "Adjust", &Hue_Lower_Value, 179);//track-bar for lower hue// createTrackbar("Hue_Upper", "Adjust", &Hue_Lower_Upper_Value, 179);//track-bar for lower-upper hue// createTrackbar("Sat_Lower", "Adjust", &Saturation_Lower_Value, 255);//track-bar for lower saturation// createTrackbar("Sat_Upper", "Adjust", &Saturation_Upper_Value, 255);//track-bar for higher saturation// createTrackbar("Val_Lower", "Adjust", &Value_Lower, 255);//track-bar for lower value// createTrackbar("Val_Upper", "Adjust", &Value_Upper, 255);//track-bar for upper value// while (1) { Mat actual_Image;//matrix to load actual image// bool temp = video_load.read(actual_Image);//loading actual image to matrix from video stream// Mat convert_to_HSV;//declaring a matrix to store converted image// cvtColor(actual_Image, convert_to_HSV, COLOR_BGR2HSV);//converting BGR image to HSV and storing it in convert_to_HSV matrix// Mat detection_screen;//declaring matrix for window where object will be detected// 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);//applying track-bar modified value of track-bar// erode(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//morphological opening for removing small objects from foreground// dilate(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//morphological opening for removing small object from foreground// dilate(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//morphological closing for filling up small holes in foreground// erode(detection_screen, detection_screen, getStructuringElement(MORPH_ELLIPSE, Size(5, 5)));//morphological closing for filling up small holes in foreground// imshow("Threesholded Image", detection_screen);//showing detected object// imshow("Original", actual_Image);//showing actual image// if (waitKey(30) == 27){ //if esc is press break the loop// break; } } return 0; }
आउटपुट