您是否已检出OpenCV doc中的示例?如果您使用功能HoughLinesP
,您将得到线条的4个坐标,因此绘制线条非常简单。我复制例如,从DOC:
vector<Vec4i> lines;
HoughLinesP(dst, lines, 1, CV_PI/180, 80, 30, 10);
for(size_t i = 0; i < lines.size(); i++)
{
line(color_dst, Point(lines[i][0], lines[i][1]),
Point(lines[i][2], lines[i][3]), Scalar(0,0,255), 3, 8);
}
在矢量lines
你得到的图像中的所有行的坐标。一旦你选择了停车场的两条线,你只需要使用它们的坐标来绘制新的线。例如,如果第一行是指数,第二个在k2
,代码可能会是这样的:
line(color_dst, Point(lines[k1][0], lines[k1][1]),
Point(lines[k2][0], lines[k2][1]), Scalar(0,0,255), 3, 8);
line(color_dst, Point(lines[k1][2], lines[k1][3]),
Point(lines[k2][2], lines[k2][3]), Scalar(0,0,255), 3, 8);
你有Hough变换的直线方程。你必须在那条线上行走,找到颜色的不连续点:段的终点。不连续点从白色变为灰色或从白色变为绿色 –
感谢您的回复,您能否更详细地解释代码?我发现opencv不能检测色彩空间,并且可以跟踪houghLine使用的颜色像素。 – user2649244