使用OpenCV C ++进行楼梯检测的线路拟合

时间:2015-10-12 09:39:50

标签: c++ opencv object-detection

我试图从下面的二进制图像中拟合线条。我的主要目标是检测楼梯模型。在OpenCV中有什么办法吗? enter image description here 谢谢你的帮助。

4 个答案:

答案 0 :(得分:1)

我能想到的最简单的方法是Hough Transform(行HoughLines()和段HoughLinesP()或RANSAC(我无法找到RANSAC行检测器) OpenCV。然而,MRPTPCL)中有一些有趣的实现。

编辑extract lines from canny edge detection

中介绍了基于Canny()HoughLines()的方法

答案 1 :(得分:1)

感谢Miki,865719,Photon和Humam Helfawi,

使用Hough-Transform后,我发现结果并不好。您可以在下图中看到: hough transform result

这是我的代码:

int main(int argc, char** argv){
Mat src, dst, color_dst;
src=imread("stairs.png");

Canny( src, dst, 50, 200, 3 );
cvtColor( dst, color_dst, CV_GRAY2BGR );


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 );
}


namedWindow( "Source", 1 );
imshow( "Source", src );

namedWindow( "Detected Lines", 1 );
imshow( "Detected Lines", color_dst );

waitKey(0);
return 0;}

感谢您的支持。

总管Hieu。

答案 2 :(得分:0)

您可以使用霍夫变换检测图像中的线条。

http://docs.opencv.org/doc/tutorials/imgproc/imgtrans/hough_lines/hough_lines.html

(这个问题不够详细。)

答案 3 :(得分:0)

获取图像的轮廓并在轮廓上应用霍夫变换。 你会得到一些重复的线(彼此非常接近)..只是按照一些距离标准过滤它们