roc*_*esh 3 opencv image-processing computer-vision
我想问一下,是否有一种方法只能检测近乎水平的霍夫线或忽略那些几乎垂直的霍夫线?我现在的HoughLine代码如下所示:
HoughLinesP(imagec, lines, 80, CV_PI/2, CV_THRESH_OTSU|CV_THRESH_BINARY, 25, 7);
for(size_t i = 0; i < lines.size(); i++)
{
Vec4i l = lines[i];
line(imagec, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(255,255,255), 8, 8);
line(imagelines, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(255,255,255), 8, 8); //draw on black image as well
}
Run Code Online (Sandbox Code Playgroud)
然而,在图像中,我只想检测水平线,或至少接近水平线,如2至4厘米.我CV_PI/2用于HoughLineP中的theta参数,因此也检测垂直线/近垂直线.
任何建议,代码示例等将不胜感激.谢谢.
蟒蛇版
import numpy as np
angle = np.arctan2(y2 - y1, x2 - x1) * 180. / np.pi
Run Code Online (Sandbox Code Playgroud)
删除垂直线
首先使用等式找到每条线的角度
double Angle = atan2(y2 - y1, x2 - x1) * 180.0 / CV_PI;
只需忽略角度为90度的线(垂直线).
做完了!