在我的代码中,我只通过HoughLinesP(OpenCV)检测垂直线。以下是切出输出的示例:
曾经是一扇门,然后我应用了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);
}
那我怎么能另外检测到那些绿色的呢?特别是只有门上面的人? 谢谢!
答案 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