opencv 检测图像线条 霍夫线检测

 1 # Writer : [email protected]
 2
 3 # Data  : 2020.3.21
 4
 5 import cv2 as cv
 6
 7 import numpy as np
 8
 9 img = cv.imread(‘../paojie.jpg‘)
10
11 gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY)
12
13 # 50,150 为二值化时的阈值 apertureSize为Sobel滤波器的大小
14
15 edges = cv.Canny(gray,50,150,apertureSize = 3)
16
17 cv.imshow(‘Canny Result‘,edges)
18
19 cv.imwrite(‘Canny_Result.jpg‘,edges)
20
21 # 高效的霍夫线检测算法
22
23 # edges : 二值图像
24
25 # 1    : ρ
26
27 # pi/180: θ
28
29 # 100  : Accumulator threshold parameter. Only those lines are returned that get enough votes ( >threshold ).
30
31 # minLineLength : Minimum length of line. Line segments shorter than this are rejected.
32
33 # maxLineGap    : Maximum allowed gap between line segments to treat them as a single line.
34
35 lines = cv.HoughLinesP(edges,1,np.pi/180,100,minLineLength=100,maxLineGap=10)
36
37 for line in lines:
38
39     x1,y1,x2,y2 = line[0]
40
41     cv.line(img,(x1,y1),(x2,y2),(0,255,0),2)
42
43 cv.imshow(‘HoughLines Result‘,img)
44
45 cv.imwrite(‘HoughLines_Result.jpg‘,img)
46
47 cv.waitKey(0)
48
49 cv.destroyAllWindows()


原图 ↑

Canny_Result.jpg ↑

HoughLines_Result.jpg ↑

原文地址:https://www.cnblogs.com/wojianxin/p/12540251.html

时间: 2024-10-07 04:58:29

opencv 检测图像线条 霍夫线检测的相关文章

opencv —— HoughLines、HoughLinesP 霍夫线变换(标准霍夫线变换、多尺度霍夫线变换、累积概率霍夫线变换)

霍夫线变换的原理 一条直线在图像二维空间可由两个变量表示,有以下两种情况: ① 在笛卡尔坐标系中:可由参数斜率和截距(k,b)表示. ② 在极坐标系中:可由参数极经和极角(r,θ)表示. 对于霍夫线变换,我们将采用第二种方式极坐标系来表示直线,因此直线的表达式可为: 化简便可得到: 对于(x0,y0),我们可以将通过这一点的所有直线统一定义为: 这就意味着每一对  代表一条通过点  的直线. 对于一个给定点   ,我们可以在直角坐标系中,绘出所有通过它的直线(θ 为 x 轴,r 为 y 轴).最

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

霍夫直线检测进行复杂环境的树干提取 霍夫直线检测是常用的直线检测算法,原理比较简单. 我叙述一下我对霍夫直线检测算法的理解:将像素点在图像中的二维坐标,通过坐标变换转化为极坐标,然后通过比较每个点在极坐标下的角度值,如果角度值相同,则判定为同直线. 该算法有几个可调参数: 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

学习 opencv---(13)opencv霍夫变换:霍夫线变换,霍夫圆变换

在本篇文章中,我们将一起学习opencv中霍夫变换相关的知识点,以及了解opencv中实现霍夫变换的HoughLines,HoughLinesP函数的使用方法,实现霍夫圆变换的HoughCircles函数的使用方法. 先尝鲜一下其中一个示例程序的运行截图: 一.引言 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确的检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像识别几何形状的基

20、【opencv入门】霍夫变换:霍夫线变换,霍夫圆变换合辑

一.引言 在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.最基本的霍夫变换是从黑白图像中检测直线(线段). 二.霍夫变换概述 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状

python数字图像处理(15):霍夫线变换

在图片处理中,霍夫变换主要是用来检测图片中的几何形状,包括直线.圆.椭圆等. 在skimage中,霍夫变换是放在tranform模块内,本篇主要讲解霍夫线变换. 对于平面中的一条直线,在笛卡尔坐标系中,可用y=mx+b来表示,其中m为斜率,b为截距.但是如果直线是一条垂直线,则m为无穷大,所有通常我们在另一坐标系中表示直线,即极坐标系下的r=xcos(theta)+ysin(theta).即可用(r,theta)来表示一条直线.其中r为该直线到原点的距离,theta为该直线的垂线与x轴的夹角.如

霍夫线变换,霍夫圆变换

在图像处理和计算机视觉领域中,如何从当前的图像中提取所需要的特征信息是图像识别的关键所在.在许多应用场合中需要快速准确地检测出直线或者圆.其中一种非常有效的解决问题的方法是霍夫(Hough)变换,其为图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.最基本的霍夫变换是从黑白图像中检测直线(线段). 1.霍夫变换 ⑴霍夫变换概述 霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形

霍夫圆检测 opencv

进行霍夫圆变换中有一个API:HoughCircles(). 第五个参数为double类型的minDist(),为霍夫变换检测到的圆的圆心之间的最小距离,即让算法能明显区分的两个不同圆之间的最小距离.这个参数如果设置太小,多个相邻的圆可能被错误的检测成了一个重合的圆.反之,如果设置太大,某些圆就不能检测出来. 第七个参数,它越小,就越可以检测到更多根本不存在的圆,而它越大的话,能通过检测的圆就更加接近完美的圆形了. 1 #include<opencv2/opencv.hpp> 2 3 usin

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

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