【问题标题】:OpenCV: findContours(): how contours are ordered?OpenCV:findContours():轮廓是如何排序的?
【发布时间】:2015-02-24 10:27:48
【问题描述】:

当我们想根据某个阈值找到给定图像的轮廓时,我们使用函数cv2.findContours() 来返回轮廓列表(代表图片轮廓的 Pythonic 数组列表)。

这里是use of the function的方法:

contours, hierarchy = cv2.findContours(thresh,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)

我的问题:

OpenCV 用来排序计数的顺序是什么?

我的意思是根据哪个标准它说这个轮廓在 位置 0,另一个在 位置 1 等等?

我需要这些信息,因为我想知道我在我的程序中处理的是哪个轮廓以及为什么给它这个或那个位置。

希望你不要结束我的问题,我只是一个初学者。

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    我不完全理解这个问题,但据我了解,轮廓位置基于图像的 x 和 y 像素坐标,这是返回的矢量列表包含的内容。因此,标准肯定是它们在图像上的位置。 (请将此视为评论)

    【讨论】:

    • 谢谢。但是每个轮廓可能有很多像素。那么他们如何根据自己在图片上的位置进行排序呢?
    • 通过使用 cv2.CHAIN_APPROX_SIMPLE 表示具有两个端点的轮廓,而不是考虑中间的所有像素。请参考以下链接-docs.opencv.org/trunk/doc/py_tutorials/py_imgproc/py_contours/…
    • 假设您使用的是 cv2.CHAIN_APPROX_SIMPLE 是的,这是正确的
    • 我接受了您的回答,因为它准确地反映了我在程序中有很多轮廓的行为。当我一个一个地画它们cv2.drawContours(image,contours,indice_of_contour,color,thickness)时,我的行为完全尊重你所说的。这就是为什么我相信你的答案是正确的。
    猜你喜欢
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 2013-05-29
    • 2017-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多