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中使用第三方库xlutils来追加写入Excel文件示例
Apr 05 Python
django通过ajax发起请求返回JSON格式数据的方法
Jun 04 Python
Python SQLite3数据库日期与时间常见函数用法分析
Aug 14 Python
python正则-re的用法详解
Jul 28 Python
python django中8000端口被占用的解决
Dec 17 Python
python求一个字符串的所有排列的实现方法
Feb 04 Python
python itsdangerous模块的具体使用方法
Feb 17 Python
Django form表单与请求的生命周期步骤详解
Jun 07 Python
Python绘图之柱形图绘制详解
Jul 28 Python
Python连接mysql数据库及简单增删改查操作示例代码
Aug 03 Python
Python中全局变量和局部变量的理解与区别
Feb 07 Python
关于Python中进度条的六个实用技巧分享
Apr 05 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
浅谈php错误提示及查错方法
2015/07/14 PHP
php调用云片网接口发送短信的实现方法
2017/10/25 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
jquery attr 设定src中含有&(宏)符号问题的解决方法
2011/07/26 Javascript
深入理解JavaScript系列(6):S.O.L.I.D五大原则之单一职责SRP
2012/01/15 Javascript
jQuery的显示和隐藏方法与css隐藏的样式对比
2013/10/18 Javascript
jquery与prototype框架的详细对比
2013/11/21 Javascript
jquery validate添加自定义验证规则(验证邮箱 邮政编码)
2013/12/04 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
通过一个简单的例子学会vuex与模块化
2017/11/22 Javascript
小程序组件之仿微信通讯录的实现代码
2018/09/12 Javascript
JavaScript实现与使用发布/订阅模式详解
2019/01/19 Javascript
vue遍历生成的输入框 绑定及修改值示例
2019/10/30 Javascript
JQuery实现折叠式菜单的详细代码
2020/06/03 jQuery
vue实现公告栏文字上下滚动效果的示例代码
2020/06/16 Javascript
在vue中实现给每个页面顶部设置title
2020/07/29 Javascript
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
2017/07/27 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
详解Python进阶之切片的误区与高级用法
2018/12/24 Python
Python flask框架实现浏览器点击自定义跳转页面
2020/06/04 Python
解决Pycharm双击图标启动不了的问题(JetBrains全家桶通用)
2020/08/07 Python
简单了解python关键字global nonlocal区别
2020/09/21 Python
StubHub德国:购买和出售门票
2017/09/06 全球购物
公司中秋节活动方案
2014/02/12 职场文书
软件部经理岗位职责范本
2014/02/25 职场文书
农村葬礼主持词
2014/03/31 职场文书
《果园机器人》教学反思
2014/04/13 职场文书
学习雷锋演讲稿
2014/05/10 职场文书
课程设计的心得体会
2014/09/03 职场文书
工程部岗位职责
2015/02/10 职场文书
入党介绍人考察意见
2015/06/01 职场文书
爱国主义影片观后感
2015/06/18 职场文书
大学运动会通讯稿
2015/07/18 职场文书
2016年安康杯竞赛活动总结
2016/04/05 职场文书
导游词之神仙居景区
2019/11/15 职场文书
clear 万能清除浮动(clearfix:after)
2023/05/21 HTML / CSS