OpenCV findContour() 返回太多轮廓(Python)

Eva*_*Kim 1 python opencv

我在使用 CV.drawContours 时遇到问题。我在这里输入这张图片。

在此处输入图片说明

然而,输出略大,并创建了一些不属于图片的空间的轮廓。这是输出的样子 在此处输入图片说明

如您所见,左侧和底部的区域以及被跟踪的轮廓线(绿色)都有所增加。我正在关注OpenCV Contours 上的本教程,但是查看教程和一些文档并没有让我很清楚这是什么类型的问题。这是我的代码。

鉴于我们在原始图片之外看到绿线,我猜想是有什么事情发生了cv.findContours,它正在拾取额外的可能的外部轮廓线,并认为原始图片中的黑色轮廓是内部轮廓线(尽管不会解释为什么它只发生在一半的边上)。

import cv2 as cv

# Find contours
im = cv.imread("binary_graph_8.png")
imgray = cv.cvtColor(im, cv.COLOR_BGR2GRAY)
ret, thresh = cv.threshold(imgray, 127, 255, 0)
contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)

# Draw countours
cv.drawContours(im, contours, -1, (0, 255, 0), thickness=1)

#Issue - function shows more than 100% of entire image...2/17/2019
cv.imshow("window title", im)
cv.waitKey()
Run Code Online (Sandbox Code Playgroud)

Bah*_*dil 5

您可以RETR_EXTERNAL改为使用RETR_TREE仅返回外部轮廓,如下所示:

使用 RETR_EXTERNAL:

在此处输入图片说明

使用 RETR_TREE:

在此处输入图片说明