我目前正在尝试使用opencv中的HoughLinesP函数检测图像中的水平线条,使用以下参数:
在opencv中使用HoughLinesP函数生成这样的黄线应使用哪些参数值?
谢谢!
更新
根据建议(感谢大家!),我甚至尝试了非常极端的值,如
我没有使用像canny这样的边缘检测滤波器,因为它无法检测到较粗的线条,边缘往往是不连续的线条。
更新2
仅供澄清,在生成结果中绘制的线条如下(在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之后)
对于所有的线
{
line(linMat[i], Point(lines[j][0], lines[j][1]), Point(lines[j][2], lines[j][3]), Scalar(0,0,255), 1, 8);
line(linMat[i], Point(lines[j][0], lines[j][1]), Point(lines[j][2], lines[j][3]), Scalar(0,0,255), 1, 8);
}