मैं नीचे दी गई छवि पर OpenCV में findcontours() फ़ंक्शन का उपयोग करने का प्रयास कर रहा हूं।ओपनसीवी findcontours प्रत्येक सर्कल के लिए 2 contours देता है
findContours(img, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE, cvPoint(0,0));
जब मैं इस क्वेरी कार्य करें: contours.size()
यह 18 देता है, ताकि प्रत्येक चक्र के लिए 2 समोच्च लगता है। मंडलियां हैं क्योंकि आप 1-पिक्सेल मोटी देख सकते हैं, यह 2 रूपांतर कैसे है? क्या यह बाहरी और एक आंतरिक के लिए है, यदि हां, तो मैं इस मंडल को प्रत्येक सर्कल के लिए केवल एक समोच्च का पता लगाने के लिए कैसे मजबूर कर सकता हूं? मैंने सोचा कि एक समोच्च को पिक्सेल के एक जुड़े अनुक्रम के रूप में परिभाषित किया गया था, 1 पिक्सेल मोटी।
लेकिन जब मैं इस उदाहरण को देखता हूं [यहां] (http://jmpelletier.com/a-simple-opencv-tutorial/) ऐसा लगता है कि यह आंतरिक और बाहरी को अलग-अलग गिनती नहीं कर रहा है। लेकिन उदाहरण में findcontours का सी संस्करण है। क्या पुराने और नए कार्यान्वयन के बीच कोई अंतर है? –
नहीं, सी और सी ++ संस्करण के बीच कोई अंतर नहीं होना चाहिए जो अंतिम परिणाम को प्रभावित करेगा। वास्तव में मुझे जो याद है, वह एक दूसरे के लिए सिर्फ एक आवरण है। हालांकि, उस लिंक से छवियों को देखते हुए, मैंने जो कहा है उसके विपरीत मैं देखता हूं। ऐसा लगता है कि प्रत्येक सर्कल के लिए आंतरिक और बाहरी समोच्च दोनों का पता लगाना है, जो – Naps62
दिखाए गए चित्र पर और भी अधिक समझ में आता है, वास्तव में, CV_RETR_EXTERNAL ध्वज का उपयोग करके इसे आपके लिए ठीक करना चाहिए। झंडे की पूरी सूची के लिए यहां देखें: http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#void findContours (इनपुटऑटपुटएरे छवि, आउटपुटएर्रेऑफअरेरेस कॉन्टूर, आउटपुटएरे पदानुक्रम, int मोड, int विधि, प्वाइंट ऑफसेट) –