我正在尝试计算这张图片中的对象数量:
我有一个代码:
import cv2
import numpy as np
image = cv2.imread('d:\obj.jpg')
blurred = cv2.pyrMeanShiftFiltering(image,31,91)
gray = cv2.cvtColor(blurred,cv2.COLOR_BGR2GRAY)
ret , threshold = cv2.threshold(gray,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
cv2.imshow("Threshold",threshold)
_, contours,_=cv2.findContours(threshold,cv2.RETR_LIST,cv2.CHAIN_APPROX_SIMPLE)
print "Number of contours: %d "%len(contours)
cv2.drawContours(image,contours,-1,(0,255,255),2)
cv2.namedWindow('Display',cv2.WINDOW_NORMAL)
cv2.imshow('Display',image)
cv2.waitKey()
对象数为9,但输出为1015。
当我尝试显示对象时,这就是我得到的:
我该如何解决? 感谢所有人:)
答案 0 :(得分:0)
您可以轻松获得轮廓区域。我建议对轮廓区域设置一个阈值。我的意思是说要遍历所有轮廓,仅保留那些面积大于您指定的number
的轮廓,而拒绝其他轮廓。这样可以避免由于噪音而出现小的轮廓。