【发布时间】:2017-07-23 20:00:45
【问题描述】:
在我的代码中,我仅通过 HoughLinesP (OpenCV) 检测垂直线。这是一个截断输出的示例:
它曾经是一扇门,然后我应用了精明算法。通过仅设置 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);
}
那么我怎样才能另外检测到绿色呢?尤其是只有门以上的那些? 谢谢!
【问题讨论】:
-
这是一个广泛的问题,但是,您可以看到哪些线与垂直线相交。还取决于您的
HoughLinesP()是否具有正确的参数来检测这些行,即足够大的 rho、最小计数等。如果您认为这可行,请告诉我,我可以详细说明问题 -
@GrayCygnus 我的
HoughLinesP()看起来像这样HoughLinesP(dst, lines, 1, CV_PI / 2, 66, 50, 150);实际上如果我增加rho 参数,会有更多的行,不是吗?这不是我的目标。但也许你现在可以通过我给定的参数来帮助我? -
在您的代码中,
if (angle)做了什么?似乎拒绝非常非常非常精确的水平线,为什么要这样做? -
@barny 正如我的第一句话所说,我拒绝所有水平线只获得垂直线。
-
“精确拒绝水平线”与“只得到垂直线”不太一样——两者之间有 88 度角。
标签: c++ opencv opencv3.0 houghlinesp