python opencv3 直线检测

git:https://github.com/linyi0604/Computer-Vision

 1 # coding:utf8
 2
 3 import cv2
 4 import numpy as np
 5
 6
 7 # 读入图像
 8 img = cv2.imread("../data/line1.png")
 9 # 转为灰度图像
10 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
11 # Canny边缘检测
12 edges = cv2.Canny(gray, 50, 100)
13 """
14 canny边缘检测:
15 有五个步骤:
16         1 高斯滤波器降噪
17         2 计算梯度
18         3 边缘上使用非最大抑制 nms
19         4 边缘上使用双阈值去除假阳性
20         5 分析所有边缘连接 消除不明显的边缘
21 """
22
23 minLineLength = 20
24 maxLineGap = 5
25 lines = cv2.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength, maxLineGap)
26 """
27 cv2.HoughLinesP
28     作用:标准霍夫线变换, 找到图像中的所有直线
29     参数:
30         1 二值图
31         2 半径精度
32         3 角度精度
33         4 最短检测长度
34         5 允许的最大缺口
35     返回:
36         一个列表,每一项是一个四元组,分别是直线两个端点的坐标
37 """
38 for line in lines:
39     for x1, y1, x2, y2 in line:
40         # 在图片上画直线
41         cv2.line(img, (x1, y1), (x2, y2), (0, 255, 0), 2)
42
43 cv2.imshow("edges", edges)
44 cv2.imshow("lines", img)
45 cv2.waitKey()
46 cv2.destroyAllWindows()

原文地址:https://www.cnblogs.com/Lin-Yi/p/9413173.html

时间: 2024-08-04 05:44:23

python opencv3 直线检测的相关文章

python opencv3 轮廓检测

git:https://github.com/linyi0604/Computer-Vision 1 # coding:utf8 2 3 import cv2 4 import numpy as np 5 6 # 创建一个200*200 的黑色空白图像 7 img = np.zeros((200, 200), dtype=np.uint8) 8 # 在图像的中央位置 放置一个100*100的白色方块 9 img[50:150, 50: 150] = 255 10 11 cv2.imshow("i

Python+OpenCV图像处理之直线检测

霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等). python实现 import cv2 import numpy as np # 使用霍夫直线变换做直线检测,前提条件:边缘检测已经完成 __author__ = "boboa" # 标准霍夫线变换 def line_detection_demo(image): gray = cv2.cvtColor(image, cv2.COLO

Python+OpenCV图像处理(十四)—— 直线检测

简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).最基本的霍夫变换是从黑白图像中检测直线(线段). 2.Hough变换的原理是将特定图形上的点变换到一组参数空间上,根据参数空间点的累计结果找到一个极大值对应的解,那么这个解就对应着要寻找的几何形状的参数(比如说直线,那么就会得到直线的斜率k与常熟b,圆就会得到圆心与半径等等) 3.霍夫线变

Hough变换直线检测

Hough变换直线检测 [email protected] http://blog.csdn.net/kezunhai 霍夫变换是图像变换中的经典算法之一,主要用来从图像中分离出具有某种相同特征的几何形状(如,直线,圆等).霍夫变换寻找直线与圆的方法相比与其它方法可以更好的减少噪声干扰.Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的曲线通过转换到参数空间的一个点. 从图中可以看到,x-y坐标和K-b坐标有点--线的对偶性.x-y坐标中的P1.P2对应于k-b坐标中的L1.L2:

边缘提取与直线检测

计算机中的边缘算法主要是依靠梯度差来计算,常见的有sobel算子,lapacian算子等,在实现方法上都大同小异,OpenCV中对这类函数都有封装,使用起来很方便: 1.Sobel算子的边缘检测 我们先找一张灰度图像,这里用一张照片,取在HSV色域的V通道: sobel算子有两个方向: -1 -2 -1 0 0 0 1 2 1 -1 0 1 -2 0 2 -1 0 1 分别用来检测水平方向与竖直方向上的边缘, cv::Sobel(image, sobelX, CV_16S, 1, 0);//1,

霍夫直线检测进行复杂环境的树干提取

霍夫直线检测进行复杂环境的树干提取 霍夫直线检测是常用的直线检测算法,原理比较简单. 我叙述一下我对霍夫直线检测算法的理解:将像素点在图像中的二维坐标,通过坐标变换转化为极坐标,然后通过比较每个点在极坐标下的角度值,如果角度值相同,则判定为同直线. 该算法有几个可调参数: C++: void HoughLinesP(InputArray image, OutputArray lines, double rho, double theta, int threshold, double minLin

霍夫直线检测算法进行树干提取

霍夫直线检测算法进行树干提取 霍夫直线检测是常用的直线检测算法,原理比较简单. 我叙述一下我对霍夫直线检测算法的理解:将像素点在图像中的二维坐标,通过坐标变换转化为极坐标,然后通过比较每个点在极坐标下的角度值,如果角度值相同,则判定为同直线. 该算法有几个可调参数: C++: void HoughLinesP(InputArray image, OutputArray lines, double rho, double theta, int threshold, double minLineLe

OpenCV2马拉松第22圈——Hough变换直线检测原理与实现

计算机视觉讨论群162501053 转载请注明:http://blog.csdn.net/abcd1992719g/article/details/27220445 收入囊中 Hough变换 概率Hough变换 自己实现Hough变换直线检测 葵花宝典 先看一下我实现的效果图 下面,我们进入Hough变换的原理讲解. 看上图,我们知道,经过一点(x0,y0)的直线可以表示成y0 = mox + b0 反过来看方程,b = –x0m + y0 ,于是我们从原来的坐标系转移到了Hough空间,m是横

【CImg】霍夫变换——直线检测

霍夫变换——直线检测 此处膜拜大神(学到很多):http://blog.csdn.net/jia20003/article/details/7724530 这个博客更了很多图像处理算法的底层实现解析,都很详细易懂,先mark ========================我是分割线============================= 霍夫变换:CV中常用的识别几何图形的方法,其中最简单的应用就是直线检测 主要原理是对于边缘的每一个像素点(x0,y0),把可能经过它的所有直线y=kx+b,