C++ 使用OpenCV C+检测楼梯的线配件+;

C++ 使用OpenCV C+检测楼梯的线配件+;,c++,opencv,object-detection,C++,Opencv,Object Detection,我正试图从下面的二值图像中拟合线条。我的主要目标是检测楼梯模型。在OpenCV中有什么方法可以做到这一点吗? 感谢您的帮助。您可以使用霍夫变换检测图像中的线条 (这个问题还不够详细。)获取图像的轮廓并对轮廓应用hough变换。 你会得到一些重复的线(彼此非常接近)。。只需根据一些距离标准对它们进行过滤我能想到的最简单的方法是(HoughLines()用于线条和HoughLinesP()用于线段)或RANSAC(我在OpenCV中找不到RANSAC线条检测器。但是在and中有有趣的实现) 编辑:

我正试图从下面的二值图像中拟合线条。我的主要目标是检测楼梯模型。在OpenCV中有什么方法可以做到这一点吗?
感谢您的帮助。

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


(这个问题还不够详细。)

获取图像的轮廓并对轮廓应用hough变换。
你会得到一些重复的线(彼此非常接近)。。只需根据一些距离标准对它们进行过滤

我能想到的最简单的方法是(
HoughLines()
用于线条和
HoughLinesP()
用于线段)或RANSAC(我在OpenCV中找不到RANSAC线条检测器。但是在and中有有趣的实现)


编辑:基于
Canny()
HoughLines()
的方法在感谢Miki,865719,光子和Human Helfawi

在使用Hough变换后,我发现结果并不好。如下图所示:

这是我的密码:

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;}
int main(int argc,char**argv){
材料src、dst、颜色测试;
src=imread(“stairs.png”);
Canny(src、dst、50、200、3);
CVT颜色(dst、颜色dst、CV灰度2BGR);
矢量线;
HoughLinesP(dst、测线1、CV_PI/180、80、30、10);
对于(size_t i=0;i
谢谢你的支持


Hieu.

谢谢你的回答,但在这种情况下,霍夫变换无效。你必须用更多的细节来描述你想要实现的目标。坎尼也是一个选项,而不是轮廓。Humam Helfawi,我不知道如何根据一些距离标准进行过滤?还要添加原始图像、您尝试的代码、实际结果和expexted结果。你说HT不起作用,你能告诉我们为什么吗?