2016-03-31 22 views
0

Bakteriler imajı altında çalışıyorum ve görüntüdeki bakteri sayısını alma isteğim var, ayrıca bakterileri belirli şekil ve boyutta sınıflandırmak gerekiyor. Opencv python kullanıyorum. Şimdi kontur yöntemini kullanıyorum.Len (kontur) ne demektir?

contours,hierarchy = cv2.findContours(dst,1,2) 
    cnt = contours[0] 
    l = len(contours) 
    print l 
    li = list(contours) 
    print li 

Bu, l = 115 ve li = bazı dizi değerlerinin bir çıktısını verir. Bu ne anlama geliyor? ,

enter image description here

cevap

0

cv2.findCountours her kontur noktaları numpy dizisi (x 2 sütun olduğu hatlarına bir listesini verir:

altına answer..e.coli görüntü bulmada bana yardım edin y koordinatları). len(foo), foo listesinin uzunluğu. Durumunuzda bu durumda 115 kontur bulundu ve li, sadece contours listesinin bir kopyası.

Kontürleri kolayca drawContours function kullanarak kolayca inceleyebilirsiniz.

# draws contours in white color, outlines only (not filled) 
cv2.drawContours(dst, contours, -1, (255,)) 

cv2.imshow("result", dst) 
cv2.waitKey(-1) 
2

Konturlar sürekli noktaları birleştirir ve tümünü bir diziye ekler. Yani bu dizideki her eleman muhtemelen farklı bir bakteriye (veya bir gölge gibi bağlı bir renk grubuna bağlı yanlış bir saptama) karşılık gelir.

len(contours) derken, bu dizideki öğe sayısını alırsınız. Bu nedenle, bakteri sayısının kaba bir tahminini alırsınız. Sizin durumunuzda, bakteriler olabilecek veya olmayabilen çevrelerinden farklı olan 115 bakteri veya renk var. Liste için bir liste tanımladığınızda ve listeyi yazdırdığınızda, bu listedeki her öğenin özelliklerini alırsınız, bu nedenle her "bağlantılı nokta grubu" veya her biri "muhtemelen bir bakteri olan nesne" özelliklerini alırsınız. Gerçekten çok basit. görüntü (siyah & dönüştürmek

Sen eşiği: Bir olarak görünen bakterilerin

  • bir grup:

    Eğer burada birçok yanlış saptamayı olduğunu fark ederse ne yapmak olduğunu beyaz) ve önce erode işlevini kullanın. Daha sonra bağlantılarını kaldırmak için dilate işlevini kullanın. Sonra bir kez daha findContours ile git. bacterias olarak algılanan

  • Lekeleri:

    sizin eşikleme yalnızca bakteriler renk aralığını kapsayan olun, bu yüzden her şey dikkate alınmayacaktır.

aşağıda kaynaklara bakın, onlar yardımcı olabilir:

http://docs.opencv.org/trunk/d4/d73/tutorial_py_contours_begin.html#gsc.tab=0

+0

için teşekkür ederim cevap için teşekkürler – meera

İlgili konular