繁体   English   中英

如何检测图像中最右边的线

[英]How can I detect the rightmost line in an image

我得到了图片中看到的以下 output。 我在图像中找到了最大的 object,但我需要正确的线。

例子

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) 相反,尝试计算每个组件的质心和 select 最右边的一个。

可以使用“moments()”function 计算轮廓的质心, 如下所述

 M = cv.moments(cnt) cx = int(M['m10']/M['m00']) cy = int(M['m01']/M['m00'])

对每个轮廓进行此计算,并且 select 具有最大cx的那个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM