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定时执行之Timer用法示例
May 27 Python
python自带的http模块详解
Nov 06 Python
python实现多线程抓取知乎用户
Dec 12 Python
Python只用40行代码编写的计算器实例
May 10 Python
完美解决Pycharm无法导入包的问题 Unresolved reference
May 18 Python
python中使用zip函数出现错误的原因
Sep 28 Python
Python实现的文轩网爬虫完整示例
May 16 Python
python的pyecharts绘制各种图表详细(附代码)
Nov 11 Python
python3实现单目标粒子群算法
Nov 14 Python
python 使用raw socket进行TCP SYN扫描实例
May 05 Python
Python pandas 列转行操作详解(类似hive中explode方法)
May 18 Python
PyCharm Community安装与配置的详细教程
Nov 24 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 trim 去除空字符的定义与语法介绍
2010/05/31 PHP
js Dialog 实践分享
2012/10/22 Javascript
实现动画效果核心方式的js代码
2013/09/27 Javascript
用jQuery与JSONP轻松解决跨域访问的问题
2014/02/04 Javascript
js浏览器本地存储store.js介绍及应用
2014/05/13 Javascript
JavaScript常用小技巧小结
2014/12/29 Javascript
浅谈JavaScript数据类型
2015/03/03 Javascript
js动态修改表格行colspan列跨度的方法
2015/03/30 Javascript
jQuery的事件委托实例分析
2015/07/15 Javascript
详解AngularJS实现表单验证
2015/12/10 Javascript
jquery拖动层效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
浅谈html转义及防止javascript注入攻击的方法
2016/12/04 Javascript
jQuery实现可拖拽3D万花筒旋转特效
2017/01/03 Javascript
jQuery点击弹出层弹出模态框点击模态框消失代码分享
2017/01/21 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
2017/03/21 jQuery
十分钟带你快速了解React16新特性
2017/11/10 Javascript
windows下更新npm和node的方法
2017/11/30 Javascript
Vue用v-for给src属性赋值的方法
2018/03/03 Javascript
JavaScript常用事件介绍
2019/01/21 Javascript
js实现全选反选不选功能代码详解
2019/04/24 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
vue项目在线上服务器访问失败原因分析
2020/08/14 Javascript
17个Python小技巧分享
2015/01/23 Python
python使用matplotlib绘制柱状图教程
2017/02/08 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
Python实现的科学计算器功能示例
2017/08/04 Python
机器学习实战之knn算法pandas
2019/06/22 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
匡威英国官网:Converse英国
2018/12/02 全球购物
日本高岛屋百货购物网站:TAKASHIMAYA
2019/03/24 全球购物
某公司.Net方向面试题
2014/04/24 面试题
体育教师个人总结
2015/02/09 职场文书
党支部考察意见范文
2015/06/02 职场文书
党支部评议意见
2015/06/02 职场文书
火烧圆明园的观后感
2015/06/03 职场文书
windows11怎么查看wifi密码? win11查看wifi密码的技巧
2021/11/21 数码科技