use*_*244 5 c++ opencv image-processing
我想为我的学校作业做一个停车场检测计划,但我是openCV和图像处理的新手.
我打算做的是使用houghLine来检测停车场上的白线并画一个盒子.但是,停车场的线路不是一个完整的矩形.
示例::
我需要的输出::

我能够使用houghLine绘制垂直线(红线)但我不知道如何加入线(绿线)以形成一个盒子,因为houghLine检测到多个线的点,它不会检测到起点和终点直线点.我也尝试凸壳方法,但我没有设法做到这一点.任何opencv函数都可以克服这个问题?
我真的不知道,希望有人能给我一些解决问题的想法.谢谢.
您检查过OpenCV 文档中的示例吗?如果使用该函数,HoughLinesP您将获得线条的 4 个坐标,因此绘制线条非常容易。我从文档中复制了示例:
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 );
}
Run Code Online (Sandbox Code Playgroud)
在向量中,lines您可以获得图像中所有线条的坐标。一旦您选择了停车场的两条线,您只需使用它们的坐标来绘制新线即可。例如,如果第一行在 index 中k1,第二行在 中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 );
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4314 次 |
| 最近记录: |