यहाँ, हम सीखेंगे कि OpenCV में आंख का पता कैसे लगाएं। हम 'C:/opencv/sources/data/haarcascades' में स्थित haarcascade_eye.xml क्लासिफायर का उपयोग आंखों का पता लगाने के लिए करेंगे। आंखों का पता लगाने के लिए, हमें इन हेडर्स को जोड़ना होगा।
पहला हेडर
OpenCV में आंख का पता लगाने और ट्रैक करने को दर्शाने वाला निम्नलिखित प्रोग्राम।
उदाहरण
#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() { 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);//स्रोत से वीडियो फ्रेम लोड करना और इसे फ्रेम नामक मैट्रिक्स में डालना// 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]);//आंखों के लिए चेहरे के क्षेत्र को रुचि क्षेत्र के रूप में लेना// 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);//दोनों आंखों के चारों ओर वृत्त बनाना// } } imshow("Detect", frame);//'Detect' नामक विंडो में परिणाम दिखाना// if (waitKey(30) == 27){ //प्रत्येक फ्रेम के लिए प्रतीक्षा समय 30 मिलीसेकंड// break; } } return 0; }आउटपुट
