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

2024-09-25 18:12:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我在图片中看到了以下输出。我找到了图像中最大的物体,但我需要正确的线条

Example

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)

Tags: 图像threshold图片cv2线条物体copyret
1条回答
网友
1楼 · 发布于 2024-09-25 18:12:44

将我的评论转移到一个答案:总是选择最厚轮廓的原因是因为线c = max(cnts, key=cv2.contourArea)。相反,请尝试计算每个组件的质心并选择最右边的一个

可以使用“矩()”函数as described here计算轮廓的质心:

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

对每个轮廓进行此计算,并选择具有最大cx的轮廓

相关问题 更多 >