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字符串拼接、截取及替换方法总结分析
Apr 13 Python
Python随机数用法实例详解【基于random模块】
Apr 18 Python
python基础教程项目三之万能的XML
Apr 02 Python
Python基础学习之函数方法实例详解
Jun 18 Python
Python + OpenCV 实现LBP特征提取的示例代码
Jul 11 Python
解决Djang2.0.1中的reverse导入失败的问题
Aug 16 Python
django drf框架自带的路由及最简化的视图
Sep 10 Python
PyQt5 closeEvent关闭事件退出提示框原理解析
Jan 08 Python
使用 PyTorch 实现 MLP 并在 MNIST 数据集上验证方式
Jan 08 Python
Python函数参数定义及传递方式解析
Jun 10 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
python实战之90行代码写个猜数字游戏
Apr 22 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
《星际争霸》各版本雷兽特点图文解析 雷兽不同形态一览
2020/03/02 星际争霸
php输出xml属性的方法
2015/03/19 PHP
jquery提示 "object expected"的解决方法
2009/12/13 Javascript
firefox下input type="file"的size是多大
2011/10/24 Javascript
javascript数组快速打乱重排的方法
2014/01/02 Javascript
JavaScript onkeypress事件入门实例(按下或按住一个键盘按键)
2014/10/17 Javascript
基于jQuery实现自动轮播旋转木马特效
2015/11/02 Javascript
jQuery实现模仿微博下拉滚动条加载数据效果
2015/12/25 Javascript
js判断手机浏览器操作系统和微信浏览器的方法
2016/04/30 Javascript
JS创建事件的三种方法(实例代码)
2016/05/12 Javascript
jquery根据td给相同tr下其他td赋值的实现方法
2016/10/05 Javascript
bootstrap基础知识学习笔记
2016/11/02 Javascript
mongoose设置unique不生效问题的解决及如何移除unique的限制
2017/11/07 Javascript
解析Angular 2+ 样式绑定方式
2018/01/15 Javascript
利用JS实现一个同Excel表现的智能填充算法
2018/08/13 Javascript
vue表单数据交互提交演示教程
2019/11/13 Javascript
python实现将一个数组逆序输出的方法
2018/06/25 Python
在Python中pandas.DataFrame重置索引名称的实例
2018/11/06 Python
python Jupyter运行时间实例过程解析
2019/12/13 Python
在TensorFlow中实现矩阵维度扩展
2020/05/22 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
python使用列表的最佳方案
2020/08/12 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
Vans(范斯)德国官网:美国南加州的原创极限运动潮牌
2017/05/02 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
信息管理专业学生自荐信格式
2013/09/22 职场文书
幼儿园教师工作感言
2014/02/15 职场文书
学雷锋志愿服务月活动总结
2014/03/09 职场文书
关于青春的演讲稿
2014/05/05 职场文书
司法所长先进事迹
2014/06/02 职场文书
2015年市场部工作总结
2015/04/30 职场文书
Java 超详细讲解hashCode方法
2022/04/07 Java/Android
Python之matplotlib绘制饼图
2022/04/13 Python
springboot实现string转json json里面带数组
2022/06/16 Java/Android
django项目、vue项目部署云服务器的详细过程
2022/07/23 Servers