हम सीखेंगे कि केवल सबसे बड़े चेहरे का पता कैसे लगाया जाए। यह विषय पिछले विषय जैसा ही है। फर्क सिर्फ इतना है कि हमने सबसे बड़े चेहरे का पता लगाने के लिए एक अतिरिक्त 'रेक्ट' स्ट्रक्चर और 'फॉर लूप' का इस्तेमाल किया।
इस फ़ंक्शन का वास्तविक स्वरूप -
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 आउटपुट