欢迎来到代码驿站!

C代码

当前位置:首页 > 软件编程 > C代码

OpenCV实现图像的直线检测

时间:2021-03-20 10:02:07|栏目:C代码|点击:

上一篇博文介绍了图像的Canny边缘检测,本文主要介绍图像的直线检测部分,主要使用概率霍夫变换来检测直线,调用的函数为HoughLinesP(),下面给出代码部分以及直线检测效果图:

1、代码部分:

// Detect_Lines.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <cv.h>
#include "highgui.h"
using namespace std;
using namespace cv;
void drawDetectLines(Mat& image,const vector<Vec4i>& lines,Scalar & color)
{ 
 // 将检测到的直线在图上画出来 
 vector<Vec4i>::const_iterator it=lines.begin(); 
 while(it!=lines.end()) 
 { 
 Point pt1((*it)[0],(*it)[1]); 
 Point pt2((*it)[2],(*it)[3]); 
 line(image,pt1,pt2,color,2); //线条宽度设置为2 
 ++it; 
 }
} 
int _tmain(int argc, _TCHAR* argv[])
{
 Mat src_img=imread("..\\image_norm\\71253.jpg");
 imshow("src_img",src_img);
 Mat I; 
 cvtColor(src_img,I,CV_BGR2GRAY);    
 Mat contours; 
 Canny(I,contours,125,350); 
 threshold(contours,contours,128,255,THRESH_BINARY); 
 vector<Vec4i> lines; 
 HoughLinesP(contours,lines,1,CV_PI/180,80,50,10); 
 drawDetectLines(src_img,lines,Scalar(0,255,0)); 
 imshow("Detect_Lines",src_img); 
 cvWaitKey(0);
 return 0;
}

2、原图以及直线检测效果图:


至此,已经实现了图像的直线检测部分,将检测出来的直线在原图中画了出来,也可以将检测出来的直线在上一篇博文中的边缘图像中画出来,效果如下:

特别说明,HoughLinesP()函数的一般步骤请参考博文:Opencv2.4.9函数HoughLinesP分析

上一篇:C++设计模式编程中Facade外观模式的使用实例解析

栏    目:C代码

下一篇:用C++实现单向循环链表的解决方法

本文标题:OpenCV实现图像的直线检测

本文地址:http://www.codeinn.net/misctech/84503.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有