我已经用opencv创建了一些轮廓,我需要确定轮廓上的一个特定点,通常是V形的最里面的点。在所附的图像中,我要标识的点用绿色箭头表示。在
左边是一个简单的例子,可以通过计算轮廓的凸包,然后找到离外壳最远的点来进行识别(例如)。在
然而,在附加图像的右侧是一个更困难的情况,我得到了几个轮廓,而不是一个轮廓,而且漂亮的“V”形不存在,因此无法识别“V”的最内侧点。如红色虚线所示,一种解决方案可能是外推较高的轮廓,直到它与较低的轮廓相交。有人知道我该怎么做吗?或者有更好的解决方案?在
我试过:
膨胀/腐蚀(当多个轮廓接近时起作用,否则不起作用)
hough变换p(容易误定位目标点)
任何建议都将不胜感激。在
此解决方案适用于您提供的两个图像。对于所有其他具有相似颜色和指向右侧的“v”形(或至少是部分“v”形)的图像,这应该是一个很好的解决方案。在
让我们先看看更简单的图像。我从使用颜色空间分割图像开始。在
接下来,我找到了
^{pr2}$mid_point
,在该行的上方和下方有相等数量的白色。在然后,我从中点开始对图像进行泛洪处理: 背景=np.零((h+2,w+2),np.uint8公司)在
现在我有了泛光图像,我知道我要寻找的点是离图像右侧最近的灰色像素。在
结果是:
现在来看看更难的图像。在右侧图像中,“v”未完全连接:
为了关闭“v”,我反复放大检查是否连接的掩码:
这是结果输出:
相关问题 更多 >
编程相关推荐