我目前试图检测使用HoughLinesP功能在OpenCV中的图像中的水平状的线,使用这些参数:如何使用HoughLinesP检测OpenCV中的水平线?
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);
}
如果您将theta设置为PI,您将得到几乎只是垂直线的结果。 PI/3似乎也一样。但PI/6返回所有方向。我还没有弄清楚细节,为什么它以这种方式工作,但修改测试图片上的theta可以给你方向。 –