OpenCV实现图像的直线检测
2019-01-15 00:03
696 查看
上一篇博文介绍了图像的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实现图像的直线检测
- OpenCV3.0 Examples学习笔记(12)-houghlines.cpp-通过HoughLinesP函数实现直线检测
- OpenCV使用Canny边缘检测器实现图像边缘检测
- 利用Opencv中Houghline方法实现直线检测
- 霍夫直线检测及opencv的实现分析
- case5 opencv中透视变换结合直线检测对图像进行校正
- OpenCV使用Sobel滤波器实现图像边缘检测
- 曲线拟合的最小二乘法(基于OpenCV实现)的,拟合图像中离散点的拟合直线
- Python3与OpenCV3.3 图像处理(十九)--直线检测
- 霍夫变换直线检测及opencv实现
- opencv 实现对摄像头输入图像中文件及证件等的实时跟踪,四边形检测及提取
- 图像显著性检测-谱残差方法 c++ opencv实现
- 图像特征检测描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代码实现
- Opencv Hough算法实现图片中直线检测
- OpenCV实现图像角点检测
- 利用霍夫变换做直线检测的原理及OpenCV代码实现
- OpenCV之imgproc 模块. 图像处理(2)实现自己的线性滤波器 给图像添加边界 Sobel 导数 Laplace 算子 Canny 边缘检测
- opencv2实现多张图片路线路牌(直线和圆)检测并将处理后的图片合成视频_计算机视觉大作业2
- Java+opencv3.2.0实现hough直线检测
- OpenCV实现傅里叶变换,通过直线检测矫正文本