【问题标题】:how to compute interior angles of hexagon shape in python openCV如何在python openCV中计算六边形的内角
【发布时间】:2018-09-23 16:10:16
【问题描述】:

我已经使用 OpenCV 在 Python 中检测到六边形的形状。我只想计算它的内角——形状是通过使用轮廓技术和近似来检测的..

【问题讨论】:

    标签: python python-2.7 opencv shape-recognition


    【解决方案1】:

    cv2.CHAIN_APPROX_SIMPLE 正如 parthagar 所建议的那样确实非常​​有用,但它通过删除直线中所有“不必要的”点来工作。如果线条不是完全笔直的,因为它们似乎不在这张照片中,它就不起作用。所以虽然你最终会得到更少的分数,这很好,但几乎肯定不会是你想要的 6 分。

    要获得恰好 6 分的近似值,您需要做更多的自定义工作。 OpenCV 提供了可用于此目的的cv2.approxPolyDP (Tutorial py contour features - 4. Contour Approximation)。它确实需要找到正确的 epsilon 值才能获得正确的点数,但这可以通过暴力破解找到:

    #cnt = Your contour to be approximated
    points_wanted = 6
    precision = 10000
    for x in range(precision):
        epsilon = (x/precision)*cv2.arcLength(cnt, True)
        approx = cv2.approxPolyDP(cnt, epsilon, True)
        if approx.shape[0] == points_wanted:
            break
    

    结果如下所示。请注意,它不会完全完美,它是一个近似值,但希望它足够接近。找到两点之间角度的方法可以在 parthagars 链接中找到。祝你好运!

    【讨论】:

      【解决方案2】:

      您必须使用 findContours 来查找轮廓。您可以将cv2.CHAIN_APPROX_SIMPLE 作为第三个参数传递给cv2.findContours(),这应该会返回六边形的 6 个点。然后,您可以使用这 6 个点通过 numpy 函数找到它们之间的角度。

      请参阅this 查找角度。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-06
        • 2020-08-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-08-30
        • 2019-07-23
        相关资源
        最近更新 更多