我目前試圖檢測使用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可以給你方向。 –