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

C++ का उपयोग करके OpenCV में सबसे बड़े चेहरे का पता कैसे लगाएं?

हम सीखेंगे कि केवल सबसे बड़े चेहरे का पता कैसे लगाया जाए। यह विषय पिछले विषय जैसा ही है। फर्क सिर्फ इतना है कि हमने सबसे बड़े चेहरे का पता लगाने के लिए एक अतिरिक्त 'रेक्ट' स्ट्रक्चर और 'फॉर लूप' का इस्तेमाल किया।

इस फ़ंक्शन का वास्तविक स्वरूप -

Mat faceROI =image_with_humanface(maxRect)

MaxRect में छवि पर स्थित सबसे बड़े चेहरे के क्षेत्र और स्थान की जानकारी होती है। ऊपर की रेखा उसी स्थान पर maxRect में संग्रहीत उसी क्षेत्र को क्रॉप कर रही है जहां छवि पर सबसे बड़ा चेहरा स्थित है और 'faceROI' मैट्रिक्स में संग्रहीत है।

निम्न प्रोग्राम स्थिर चित्रों से सबसे बड़े चेहरे का पता लगाता है -

उदाहरण

#शामिल करें objdetect/objdetect.hpp>
//इस हेडर में कैस्केड क्लासिफायर की परिभाषा शामिल है //#includeनेमस्पेस एसटीडी का उपयोग करना;नेमस्पेस cv का उपयोग करना;int main(int argc, char** argv) { Mat image_with_humanface;//Declaring a मानवीय चेहरों के साथ छवि लोड करने के लिए मैट्रिक्स // image_with_humanface =imread("person.jpg");//एक छवि लोड करना जिसमें मानव चेहरा शामिल है // नामविंडो ("फेस डिटेक्शन"); // परिणाम दिखाने के लिए एक विंडो घोषित करना // stringtrained_classifier_location ="C:/opencv/sources/data/haarcascades/haarcascade_frontalface_alt.xml";// हमारे XML प्रशिक्षित क्लासिफायर को एक स्ट्रिंग में परिभाषित करना // CascadeClassifier faceDetector;// की 'फेस डिटेक्टर' नाम की ऑब्जेक्ट की घोषणा CascadeClassifier class// faceDetector.load(trained_classifier_location);//ऑब्जेक्ट में XML प्रशिक्षित क्लासिफायर लोड करना//वेक्टर<रेक्ट> चेहरे;// चेहरे नाम का एक आयताकार वेक्टर घोषित करना // faceDetector.detectMultiScale(image_with_humanface, face, 1.1, 4, CASCADE_FIND_BIGGEST_OBJECT);//'image_with_humanfaces' मैट्रिक्स में चेहरों का पता लगाना // Rect maxRect;//एक आयत घोषित करना। डिफ़ॉल्ट रूप से आकार शून्य पिक्सेल // के लिए है (int i =0; i  maxRect.area ()) {// चेहरे के क्षेत्र की गणना करना और इसे maxRect// maxRect =face[i] के क्षेत्र से तुलना करना size_t i =0; i  

आउटपुट

C++ का उपयोग करके OpenCV में सबसे बड़े चेहरे का पता कैसे लगाएं?


  1. सी ++ का उपयोग कर ओपनसीवी में अंडाकार कैसे आकर्षित करें?

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

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

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

  1. सी ++ का उपयोग कर ओपनसीवी में किसी छवि के चैनलों की संख्या की गणना कैसे करें?

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