如何添加对角概率霍夫线

时间:2017-07-23 20:00:45

标签: c++ opencv opencv3.0 houghlinesp

在我的代码中,我只通过HoughLinesP(OpenCV)检测垂直线。以下是切出输出的示例:

enter image description here

曾经是一扇门,然后我应用了canny算法。通过仅设置90度角,将仅检测到垂直线(红色线)。但现在我想在门上方的这个小部分添加绿线。

角度计算如下:

    double angle = atan2(ppt2.y - ppt1.y, ppt2.x - ppt1.x) * 180.0 / CV_PI;
    if (angle) {
        line(cdst, ppt1, ppt2, Scalar(0, 0, 255), 2, CV_AA);
    }

那我怎么能另外检测到那些绿色的呢?特别是只有门上面的人? 谢谢!

1 个答案:

答案 0 :(得分:0)

您的结果只显示垂直线,而您是拒绝精确水平线,您可能想要查看该测试实际删除的内容。拒绝水平线也不仅仅是接受垂直线,我认为在这种情况下你基本上只能从HoughLinesP获得垂直线。

无论如何,要检测到更多的对角线,你必须从pi / 2改变HoughLinesP theta参数:

HoughLinesP(dst, lines, 1, CV_PI / 2, 66, 50, 150);

,例如:

HoughLinesP(dst, lines, 1, CV_PI / 180.0, 66, 50, 150);

然后你可能需要让你的角度拒绝更强大/更复杂以拒绝奇怪的角度线以及精确的0.000000000000弧度线,如atan2所返回的那样,无论如何它似乎更具弹性。图像角度的微小变化,以检查一系列角度,例如+/- 0.01