OpenCV实现图像的直线检测

 更新时间:2019年01月12日 12:13:25   作者:lindamtd  
这篇文章主要为大家详细介绍了OpenCV实现图像直线检测的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

上一篇博文介绍了图像的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分析

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Opencv图像处理之轮廓外背景颜色改变

    Opencv图像处理之轮廓外背景颜色改变

    这篇文章主要为大家详细介绍了Opencv图像处理之轮廓外背景颜色改变,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • Cocos2d-x UI开发之CCControlSwitch控件类使用实例

    Cocos2d-x UI开发之CCControlSwitch控件类使用实例

    这篇文章主要介绍了Cocos2d-x UI开发之CCControlSwitch控件类使用实例,本文代码中含大量注释讲解了CCControlSwitch控件类的使用,需要的朋友可以参考下
    2014-09-09
  • 最小生成树算法C语言代码实例

    最小生成树算法C语言代码实例

    这篇文章主要介绍了最小生成树算法C语言代码实例,有需要的朋友可以参考一下
    2013-12-12
  • C++实现判断字符串是否回文实例解析

    C++实现判断字符串是否回文实例解析

    这篇文章主要介绍了C++实现判断字符串是否回文,其中采用了数据结构中栈以及过滤字符等技术,,需要的朋友可以参考下
    2014-07-07
  • 关于C++友元函数的实现讲解

    关于C++友元函数的实现讲解

    今天小编就为大家分享一篇关于关于C++友元函数的实现讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • C++ COM编程之QueryInterface函数(二)

    C++ COM编程之QueryInterface函数(二)

    这篇文章主要介绍了C++ COM编程之QueryInterface函数(二),本文是第二篇,第一篇请参阅相关文档,需要的朋友可以参考下
    2014-10-10
  • 基于MATLAB神经网络图像识别的高识别率代码

    基于MATLAB神经网络图像识别的高识别率代码

    今天小编就为大家分享一篇关于基于MATLAB神经网络图像识别的高识别率代码,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-03-03
  • C++中的异常处理机制详解

    C++中的异常处理机制详解

    本文给大家分享的是C++中的异常处理机制。对如何处理异常、基本异常语法、异常保护代码等进行了探讨,推荐给大家。
    2017-04-04
  • C语言实现enum枚举

    C语言实现enum枚举

    在实际编程中,有些数据的取值往往是有限的,只能是非常少量的整数,并且最好为每个值都取一个名字,以方便在后续代码中使用,比如一个星期只有七天,一年只有十二个月,一个班每周有六门课程等。 以每周七天为例,我们可以使用#define命令来给每天指定一个名字
    2021-06-06
  • c++素数筛选法

    c++素数筛选法

    本文讲的是筛选法的C++实现, 筛选法又称筛法,是求不超过自然数N(N&gt;1)的所有质数的一种方法。据说是古希腊的埃拉托斯特尼(Eratosthenes,约公元前274~194年)发明的,又称埃拉托斯特尼筛子。
    2017-05-05

最新评论