检查两个端点之间是否有线,opencv

时间:2014-03-18 11:30:49

标签: c++ opencv kinect shape-recognition

我使用opencv来检测形状,我必须检测这样的形状enter image description here

这将是一个手绘图片,我正在使用kinect通过检查帧来检测图片。现在我通过去除噪点,边缘检测,找到轮廓和大约来获得6点这些类型的图片,现在我无法检测到正确的面部,左面,下面或上面的形状。随着每张图片的点位置改变。

所以我想知道给出两点,我如何检查点之间是否有线段。在得到两点后,我可以从剩余点位置计算出形状指向的位置。

如果有人有更好的解决方案,请分享。

1 个答案:

答案 0 :(得分:0)

假设您有两个端点,并且您的线段的像素值大于零(在上图中您可能需要使用阈值二进制反转)。

  1. 通过绘制厚度= 1像素的线来创建蒙版图像。

  2. 使用上面的面具将源图像复制到新的Mat。

  3. 现在计算结果Mat中的非零像素,

    • 如果它为零,则点之间没有线,
    • 如果计数非零给出一个值,你可以通过比较你在面具中绘制的线的长度来交叉检查它。