Aşağıdaki resimde OpenCV'de findcontours() işlevini kullanmaya çalışıyorum. OpenCV findcontours, her daire için 2 kontür döndürüyor
findContours(img, contours, hierarchy, CV_RETR_TREE, CV_CHAIN_APPROX_NONE, cvPoint(0,0));
ben bu sorguyu yapmak
: her dairenin 2 kontur görünüyor böylececontours.size()
o, 18 döndürür. Daireler 1 piksel kalınlığında görebildiğiniz gibi, 2 kontür nasıl? Öyle ise, iç ve dış için bir tane mi, eğer öyleyse, bu işlevi her çember için sadece bir konturu tespit etmek için nasıl zorlayabilirim? Bir konturun piksel 1 piksel kalınlığında bağlı bir dizi olarak tanımlandığını düşündüm.
Fakat bu örneğe baktığımda [burada] (http://jmpelletier.com/a-simple-opencv-tutorial/), iç ve dış kısımları ayrı ayrı saymıyor gibi görünüyor. Ama örnekte bulcontourların C versiyonu var. Eski ve yeni uygulamalar arasında bir fark var mı? –
no, C ve C++ sürümü arasında son sonucu etkileyecek hiçbir fark olmamalıdır. Aslında hatırladığım şeyden biri, diğeri için sadece bir sarıcı. Ancak, bu linkten görüntülere baktığımda, söylediklerinizin tam tersini görüyorum. Her dairenin hem iç hem de dış çevresini tespit ediyor gibi gözüküyor, bu da burada gösterilen görüntü üzerinde daha da mantıklı olan – Naps62
Gerçekten de CV_RETR_EXTERNAL bayrağı sizin için düzeltmelidir. Tam bir bayrak listesi için buraya bakın: http://opencv.itseez.com/modules/imgproc/doc/structural_analysis_and_shape_descriptors.html#void findContours (InputOutputArray görüntüsü, OutputArrayOfArrays konturları, OutputArray hiyerarşisi, int modu, int yöntemi, Point ofset) –