我在图片中看到了以下输出。我找到了图像中最大的物体,但我需要正确的线条
ret, thresh = cv2.threshold(imgGray, 100, 255, 1)
cnts = cv2.findContours(threshh.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)
c = max(cnts, key=cv2.contourArea)
extRight = tuple(c[c[:, :, 0].argmax()][0]) # sağ taraf
cv2.circle(img, (extRight[0], extRight[1]+yx), 6, (0, 0, 255), -1)
将我的评论转移到一个答案:总是选择最厚轮廓的原因是因为线
c = max(cnts, key=cv2.contourArea)
。相反,请尝试计算每个组件的质心并选择最右边的一个可以使用“矩()”函数as described here计算轮廓的质心:
对每个轮廓进行此计算,并选择具有最大
cx
的轮廓相关问题 更多 >
编程相关推荐