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实现子类调用父类的方法
Nov 10 Python
Python pickle类库介绍(对象序列化和反序列化)
Nov 21 Python
Python 冒泡,选择,插入排序使用实例
Feb 05 Python
Python书单 不将就
Jul 11 Python
python logging重复记录日志问题的解决方法
Jul 12 Python
对web.py设置favicon.ico的方法详解
Dec 04 Python
django settings.py 配置文件及介绍
Jul 15 Python
python图像处理模块Pillow的学习详解
Oct 09 Python
Keras 加载已经训练好的模型进行预测操作
Jun 17 Python
python中逻辑与或(and、or)和按位与或异或(&、|、^)区别
Aug 05 Python
python操作toml文件的示例代码
Nov 27 Python
python全面解析接口返回数据
Feb 12 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利用str_replace防注入的方法
2013/11/10 PHP
php递归获取目录内文件(包含子目录)封装类分享
2013/12/25 PHP
PHP提示Deprecated: mysql_connect(): The mysql extension is deprecated的解决方法
2014/08/28 PHP
smarty内置函数{loteral}、{ldelim}和{rdelim}用法实例
2015/01/22 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
围观tangram js库
2010/12/28 Javascript
js取消单选按钮选中并判断对象是否为空
2013/11/14 Javascript
Jquery easyui开启行编辑模式增删改操作
2016/01/14 Javascript
Bootstrap多级导航栏(级联导航)的实现代码
2016/03/08 Javascript
多个上传文件用js验证文件的格式和大小的方法(推荐)
2017/03/09 Javascript
浅析Vue 防抖与节流的使用
2019/11/14 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
vue实例的选项总结
2020/06/09 Javascript
在Docker上开始部署Python应用的教程
2015/04/17 Python
Python基础语法(Python基础知识点)
2016/02/28 Python
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
matplotlib绘图实例演示标记路径
2018/01/23 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
python如何写出表白程序
2020/06/01 Python
python中实现词云图的示例
2020/12/19 Python
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
Zooplus罗马尼亚:宠物食品和配件
2019/11/02 全球购物
九年级化学教学反思
2014/01/28 职场文书
宣传策划类求职信范文
2014/01/31 职场文书
网络技术专业求职信
2014/02/18 职场文书
小学生新年寄语
2014/04/03 职场文书
市场营销工作计划书
2014/05/06 职场文书
药店促销活动策划方案
2014/08/24 职场文书
小学少先队辅导员述职报告
2015/01/10 职场文书
家长会欢迎词
2015/01/23 职场文书
辩论赛新闻稿
2015/07/17 职场文书
乡镇干部学习心得体会
2016/01/23 职场文书