यहाँ, हम सीखेंगे कि OpenCV में आंख को कैसे ट्रैक करें। आंखों का पता लगाने के बाद, ट्रैकिंग एक सरल और सीधा कार्य है। हमने पता लगाई गई आंखों को घेरने के लिए वृत्त का उपयोग किया। वृत्त के केंद्र को ट्रैक करने का अर्थ है आंखों के केंद्र को ट्रैक करना। वृत्त के केंद्र को ट्रैक करने के लिए, हमें दो पूर्णांक चरों की आवश्यकता होती है। यह main() फंक्शन के अंदर पहली दो लाइनों (9वीं और 10वीं लाइन) पर किया गया है। पूर्णांक चरों का नाम 'x_axis' और 'y_axis' है।
लाइन 42 और 43 में, केंद्र के क्षैतिज और लंबवत निर्देशांक मान 'x_axis' और 'y_axis' चर में कॉपी किए गए हैं और इनमें वृत्त का केंद्र है। 44वीं लाइन पर, 'cout' स्टेटमेंट का उपयोग करके, हमने केंद्र का मान दिखाया है। इस तरह हम आंख के स्थान को ट्रैक कर सकते हैं।
OpenCV में C++ का उपयोग करके आंख की स्थिति को ट्रैक करने का निम्नलिखित कोड।
उदाहरण
#include<iostream> #include<opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> #include<opencv2/objdetect/objdetect.hpp> using namespace cv; using namespace std; int main() { int x_axis;//निर्देशांक मान संग्रहीत करने के लिए पूर्णांक चर घोषित करना// int y_axis;//निर्देशांक मान संग्रहीत करने के लिए पूर्णांक चर घोषित करना// Mat frame;//वीडियो फ्रेम को इसमें संग्रहीत करने के लिए मैट्रिक्स घोषित करना// namedWindow("Detect");//हमारा काम दिखाने के लिए विंडो घोषित करना// VideoCapture image(0);//डिफ़ॉल्ट कैमरे से वीडियो कैप्चर करना// if (!image.isOpened()){ //वीडियो स्रोत नहीं मिलने पर त्रुटि संदेश// cout << "Couldn't load video from the source.Make sure your camera is working properly." << endl; system("pause"); return 0; } double height = image.set(CAP_PROP_FRAME_HEIGHT, 480);//प्रत्येक फ्रेम की ऊंचाई सेट करना// double width = image.set(CAP_PROP_FRAME_WIDTH, 640);//प्रत्येक फ्रेम की चौड़ाई सेट करना// CascadeClassifier face_cascade, eyes_cascade;//CascadeClassifier ऑब्जेक्ट घोषित करना// face_cascade.load("C:/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml");//कैस्केड क्लासिफायर लोड करना// eyes_cascade.load("C:/opencv/sources/data/haarcascades/haarcascade_eye.xml"); while (true) { bool temp = image.read(frame);//स्रोत से वीडियो फ्रेम लोड करना और इसे फ्रेम नामक मैट्रिक्स में डालना// std::vector<Rect>faces;//faces नामक वेक्टर घोषित करना// face_cascade.detectMultiScale(frame, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(100, 100));//चेहरे का पता लगाना for (int i = 0; i < faces.size(); i++){ //चेहरे का पता लगाने के लिए Point center(faces[i].x + faces[i].width * 0.5, faces[i].y + faces[i].height * 0.5);//चेहरे का केंद्र प्राप्त करना// ellipse(frame, center, Size(faces[i].width * 0.5, faces[i].height * 0.5), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);//चेहरे पर दीर्घवृत्त बनाना// Mat faceROI = frame(faces[i]);//आंखों के लिए चेहरे के क्षेत्र को रुचि क्षेत्र के रूप में लेना// std::vectoreyes;//eyes नामक वेक्टर घोषित करना// eyes_cascade.detectMultiScale(faceROI, eyes, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(5, 5));//हर चेहरे में आंखों का पता लगाना// for (size_t j = 0; j < eyes.size(); j++){ //आंखों का पता लगाने के लिए Point center(faces[i].x + eyes[j].x + eyes[j].width * 0.5, faces[i].y + eyes[j].y + eyes[j].height * 0.5);//दोनों आंखों के केंद्र प्राप्त करना// int radius = cvRound((eyes[j].width + eyes[j].height) * 0.25);//आंख को घेरने वाले वृत्त की त्रिज्या घोषित करना// circle(frame, center, radius, Scalar(255, 0, 0), 4, 8, 0);//दोनों आंखों के चारों ओर वृत्त बनाना// x_axis = eyes[j].x;//आंखों के x अक्ष स्थान को x_axis में संग्रहीत करना// y_axis = eyes[j].y;//आंखों के y अक्ष स्थान को y_axis में संग्रहीत करना// cout << "Position of the eyes is:" << "(" << x_axis << "," << y_axis << ")" << endl;//निर्देशांक मान दिखाना// } } imshow("Detect", frame);//'Detect' नामक विंडो में परिणाम दिखाना// if (waitKey(30) == 27){ //प्रत्येक फ्रेम के लिए प्रतीक्षा समय 30 मिलीसेकंड// break; } } return 0; }आउटपुट

