python hough变换检测直线的实现方法
作者:Jackilina_Stone 时间:2022-06-11 10:08:37
1 原理
2 检测步骤
将参数空间(ρ,θ) 量化成m*n(m为ρ的等份数,n为θ的等份数)个单元,并设置累加器矩阵,初始值为0;
对图像边界上的每一个点(x,y)带入ρ=xcosθ+ysinθ,求得每个θ对应的ρ值,并在ρ和θ所对应的单元,将累加器加1,即:Q(i,j)=Q(i,j)+1;
检验参数空间中每个累加器的值,累加器最大的单元所对应的ρ和θ即为直角坐标系中直线方程的参数。
3 接口
image:二值图像,canny边缘检测输出。这里是result。
rho: 以像素为单位的距离精度,这里为1像素。如果想要检测的线段更多,可以设为0.1。
theta: 以弧度为单位的角度精度,这里为numpy.pi/180。如果想要检测的线段更多,可以设为0.01 * numpy.pi/180。
threshod: 阈值参数,int类型,超过设定阈值才被检测出线段,这里为10。
minLineLength:线段以像素为单位的最小长度。
maxLineGap:同一方向上两条线段判定为一条线段的最大允许间隔。
4 代码及结果
import os
import numpy as np
import cv2
from PIL import Image, ImageEnhance
import math
def img_processing(img):
# 灰度化
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
# canny边缘检测
edges = cv2.Canny(binary, 50, 150, apertureSize=3)
return edges
def line_detect(img):
img = Image.open(img)
img = ImageEnhance.Contrast(img).enhance(3)
# img.show()
img = np.array(img)
result = img_processing(img)
# 霍夫线检测
lines = cv2.HoughLinesP(result, 1, 1 * np.pi/180, 10, minLineLength=10, maxLineGap=5)
# print(lines)
print("Line Num : ", len(lines))
# 画出检测的线段
for line in lines:
for x1, y1, x2, y2 in line:
cv2.line(img, (x1, y1), (x2, y2), (255, 0, 0), 1)
pass
img = Image.fromarray(img, 'RGB')
img.show()
if __name__ == "__main__":
line_detect("1.jpg")
pass
原图如下:
检测结果:
来源:https://blog.csdn.net/wss794/article/details/93023013
标签:python,hough,检测直线
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
Linux系统(X64)安装Oracle11g完整安装图文教程另附基本操作
2023-07-07 08:25:36
![](https://img.aspxhome.com/file/2023/0/63360_0s.jpg)
如何给eWebEditor编辑器加上运行代码框功能
2007-09-25 07:02:00
如何编写CSS代码才能更有效率
2007-11-07 18:51:00
Python爬虫抓取手机APP的传输数据
2021-10-04 03:26:51
![](https://img.aspxhome.com/file/2023/8/87968_0s.png)
用javascript替换URL中的参数值示例代码
2023-08-30 03:58:09
一篇文章教你用Python实现一键文件重命名
2022-09-21 20:18:38
![](https://img.aspxhome.com/file/2023/8/71508_0s.jpg)
Python程序中的观察者模式结构编写示例
2022-08-04 22:12:11
![](https://img.aspxhome.com/file/2023/3/66823_0s.png)
如何对Python编译PyInstaller打包生成的exe文件进行反编译生成pyc、py源代码文件
2023-11-06 00:10:33
![](https://img.aspxhome.com/file/2023/6/64286_0s.png)
Windows下Anaconda下载安装与配置教程分享
2023-09-29 22:37:11
![](https://img.aspxhome.com/file/2023/6/89436_0s.png)
完美解决jupyter由于无法import新包的问题
2021-09-19 01:21:11
opencv实现图像缩放效果
2022-10-24 04:52:28
![](https://img.aspxhome.com/file/2023/8/92188_0s.jpg)
用Python实现读写锁的示例代码
2022-09-19 13:51:01
Python eval的常见错误封装及利用原理详解
2021-06-11 22:38:42
交互设计实用指南系列(11)—减少记忆负担
2010-03-29 13:12:00
![](https://img.aspxhome.com/file/UploadPic/20103/29/t1za0vxjlexxxxxxxx-569-268-29s.jpg)
python中利用xml.dom模块解析xml的方法教程
2022-08-17 01:44:47
python selenium爬取斗鱼所有直播房间信息过程详解
2023-11-19 07:00:11
python实现解数独程序代码
2021-05-16 18:39:43
![](https://img.aspxhome.com/file/2023/8/101318_0s.png)
表格艺术经典回顾
2013-07-14 11:11:04
Python logging日志模块 配置文件方式
2021-03-07 04:31:01
Python装饰器用法实例总结
2023-11-18 07:37:36