【发布时间】:2014-02-20 09:51:24
【问题描述】:
我目前正在尝试使用 opencv 中的 HoughLinesP 函数检测图像中的水平线,使用以下参数:
HoughLinesP(linMat[i], lines, 1, CV_PI/180, 80, linMat[i].cols*(0.3), 3);
其中linMat[i] 是输入图像。结果是这样的
http://postimg.org/image/49b8wzlgz/
虽然可以,但我想要的是水平方向的线条,如图中的黄线所示(该线条是手动绘制的)
http://postimg.org/image/rh9wlueo7/
我尝试将CV_PI/180参数改成更小的值(如CV_PI/45),也尝试为其他参数使用各种值,但无法生成水平线。
在opencv中使用HoughLinesP函数生成这样的黄线,参数中应该使用什么值?
谢谢!
更新
按照建议(谢谢!)我已经尝试过非常极端的值,例如
HoughLinesP(linMat[i], lines, 1, CV_PI/360, 80, 1, 1);
尽管如此,结果线在接近垂直方向的斜率如下:postimg.org/image/y5w6vm7lx/(请复制粘贴链接...)。 我不使用 canny 之类的边缘检测过滤器,因为它无法检测到较粗的线条,边缘往往是不连续的线条。
更新 2
为澄清起见,结果中绘制的线条生成如下(在HoughLinesP之后)
for all lines
{
line( linMat[i], Point(lines[j][0], lines[j][1]), Point(lines[j][2], lines[j][3]), Scalar(0,0,255), 1, 8 );
}
【问题讨论】:
标签: opencv