gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:13:40 25 4
gpt4 key购买 nike

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

enter image description here

但是,输出会稍大一些,并会创建一些不属于图片的空间的轮廓。这是输出的样子
enter image description here

如您所见,沿着左侧和底部增加了面积,并绘制了轮廓线(绿色)。我正在按照本教程on 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()

最佳答案

我最近在同一个问题上苦苦挣扎,发现的唯一解决方案是使用层次结构过滤获得的轮廓。当然,这是一种不好的解决方案,但对我有用。

对于您的情况,您应该仅预测两种可能的故障。

  • 您在结果层次结构中具有此类区域。您可以肯定地说里面没有任何东西,所以只需忽略没有嵌套子项的第一等高线
  • 您提升的整个图像可能会嵌套到另一个轮廓中。然后使用层次结构提取它不是问题。

  • 总而言之,我宁愿编写几行代码来检查此选项,然后深入到opencv的胆量。

    我想,关于轮廓的层次结构的最佳教程是 there

    关于python - OpenCV findContour()返回太多轮廓(Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54748189/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com