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

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


यहाँ, हम सीखेंगे कि OpenCV में आंख का पता कैसे लगाएं। हम 'C:/opencv/sources/data/haarcascades' में स्थित haarcascade_eye.xml क्लासिफायर का उपयोग आंखों का पता लगाने के लिए करेंगे। आंखों का पता लगाने के लिए, हमें इन हेडर्स को जोड़ना होगा।

पहला हेडर है, और यह C++ प्रोग्रामिंग भाषा का हेडर है। छवियों को पढ़ने-लिखने और यूजर इंटरफेस कार्यक्षमताएं 'highgui' हेडर में परिभाषित हैं। हमें छवि गुणवत्ता बढ़ाने के लिए 'imgproc' हेडर जोड़ना होगा, और हम चेहरे और आंखों का पता लगाने के लिए 'objdetect' हेडर का भी उपयोग करते हैं।

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; }

आउटपुट

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


  1. OpenCV में C++ का उपयोग करके दीर्घवृत्त कैसे बनाएं? OpenCV में C++ का उपयोग करके दीर्घवृत्त कैसे बनाएं?

    दीर्घवृत्त बनाने के लिए, हमें एक केंद्र, प्रमुख अक्ष और लघु अक्ष की आवश्यकता होती है। इसका मतलब है कि हमें दीर्घवृत्त के लिए तीन पैरामीटर चाहिए। हमें एक मैट्रिक्स चाहिए जहां हम दीर्घवृत्त बनाएंगे, और हमें लाइन की मोटाई और लाइन का रंग घोषित करना होगा। जब हम OpenCV का उपयोग करके दीर्घवृत्त बनाना चाहते

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

    रेखा बनाने के लिए हमें दो बिंदुओं की आवश्यकता होती है - प्रारंभिक बिंदु और अंतिम बिंदु। हमें रेखा खींचने के लिए एक कैनवास की भी आवश्यकता होती है। OpenCV का उपयोग करके, मैट्रिक्स हमारा कैनवास है, हमें रेखा के प्रारंभिक और अंतिम बिंदुओं को परिभाषित करने की आवश्यकता होती है। हमें रेखा को एक रंग निर्दिष

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

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