python hough变换检测直线的实现方法


Posted in Python onJuly 12, 2019

1 原理

python hough变换检测直线的实现方法

 2 检测步骤

将参数空间(ρ,θ) 量化成m*n(m为ρ的等份数,n为θ的等份数)个单元,并设置累加器矩阵,初始值为0;

对图像边界上的每一个点(x,y)带入ρ=xcosθ+ysinθ,求得每个θ对应的ρ值,并在ρ和θ所对应的单元,将累加器加1,即:Q(i,j)=Q(i,j)+1;

检验参数空间中每个累加器的值,累加器最大的单元所对应的ρ和θ即为直角坐标系中直线方程的参数。

 3 接口

python hough变换检测直线的实现方法

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

原图如下:

python hough变换检测直线的实现方法

检测结果:

python hough变换检测直线的实现方法

python hough变换检测直线的实现方法

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

Python 相关文章推荐
回调函数的意义以及python实现实例
Jun 20 Python
python删除服务器文件代码示例
Feb 09 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
对python 生成拼接xml报文的示例详解
Dec 28 Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 Python
Python pandas RFM模型应用实例详解
Nov 20 Python
python ffmpeg任意提取视频帧的方法
Feb 21 Python
django列表筛选功能的实现代码
Mar 27 Python
Python OpenCV读取中文路径图像的方法
Jul 02 Python
python入门之算法学习
Apr 22 Python
简单介绍Python的第三方库yaml
Jun 18 Python
Python中的 Set 与 dict
Mar 13 Python
Python实现的远程文件自动打包并下载功能示例
Jul 12 #Python
完美解决python3.7 pip升级 拒绝访问问题
Jul 12 #Python
在交互式环境中执行Python程序过程详解
Jul 12 #Python
pip指定python位置安装软件包的方法
Jul 12 #Python
python使用Pandas库提升项目的运行速度过程详解
Jul 12 #Python
Python-copy()与deepcopy()区别详解
Jul 12 #Python
新手入门Python编程的8个实用建议
Jul 12 #Python
You might like
ThinkPHP模板自定义标签使用方法
2014/06/26 PHP
php获取twitter最新消息的方法
2015/04/14 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
Javascript中的变量使用说明
2010/05/18 Javascript
详解强大的jQuery选择器之基本选择器、层次选择器
2012/02/07 Javascript
javascript:;与javascript:void(0)使用介绍
2013/06/05 Javascript
jquery 表格排序、实时搜索表格内容(附图)
2014/05/19 Javascript
JS实现的仿东京商城菜单、仿Win右键菜单及仿淘宝TAB特效合集
2015/09/28 Javascript
非常实用的js验证框架实现源码 附原理方法
2016/06/08 Javascript
JavaScript——DOM操作——Window.document对象详解
2016/07/14 Javascript
EasyUI加载完Html内容样式渲染完成后显示
2016/07/25 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
JQuery实现定时刷新功能代码
2017/05/09 jQuery
NodeJS创建最简单的HTTP服务器
2017/05/15 NodeJs
Cpage.js给组件绑定事件的实现代码
2017/08/31 Javascript
使用JS实现导航切换时高亮显示的示例讲解
2018/08/22 Javascript
TypeScript中使用getElementXXX()的示例代码
2019/09/12 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
python迭代器的使用方法实例
2013/11/21 Python
python获取外网ip地址的方法总结
2015/07/02 Python
Python提取网页中超链接的方法
2016/09/18 Python
python批量添加zabbix Screens的两个脚本分享
2017/01/16 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
python3+dlib实现人脸识别和情绪分析
2018/04/21 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
全面解析HTML5中的标准属性与自定义属性
2016/02/18 HTML / CSS
远程Wi-Fi宠物监控相机:Petcube
2017/04/26 全球购物
工作违纪检讨书
2014/02/17 职场文书
网站客服岗位职责
2014/04/05 职场文书
美化环境标语
2014/06/20 职场文书
社区务虚会发言材料
2014/10/20 职场文书
道歉短信大全
2015/05/12 职场文书
Spring事务管理下synchronized锁失效问题的解决方法
2022/03/31 Java/Android
spring IOC容器的Bean管理XML自动装配过程
2022/05/30 Java/Android