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打开网页和暂停实例
Sep 30 Python
python操作mysql中文显示乱码的解决方法
Oct 11 Python
Python中super关键字用法实例分析
May 28 Python
基于Python实现文件大小输出
Jan 11 Python
Django admin美化插件suit使用示例
Dec 12 Python
Python进度条实时显示处理进度的示例代码
Jan 30 Python
python mac下安装虚拟环境的图文教程
Apr 12 Python
tensorflow 限制显存大小的实现
Feb 03 Python
python GUI库图形界面开发之PyQt5下拉列表框控件QComboBox详细使用方法与实例
Feb 27 Python
基于Python中random.sample()的替代方案
May 23 Python
使用python-cv2实现视频的分解与合成的示例代码
Oct 26 Python
分享unittest单元测试框架中几种常用的用例加载方法
Dec 02 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
极典R601SW收音机
2021/03/02 无线电
php学习笔记 php中面向对象三大特性之一[封装性]的应用
2011/06/13 PHP
PHP性能优化 产生高度优化代码
2011/07/22 PHP
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
php生成图片验证码-附五种验证码
2015/08/19 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
用jquery实现学校的校历(asp.net+jquery ui 1.72)
2010/01/01 Javascript
javascript css styleFloat和cssFloat
2010/03/15 Javascript
完美解决IE低版本不支持call与apply的问题
2013/12/05 Javascript
jQuery判断div随滚动条滚动到一定位置后停止
2014/04/02 Javascript
整理Javascript事件响应学习笔记
2015/12/02 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
JavaScript实现移动端轮播效果
2017/06/06 Javascript
基于vue的换肤功能的示例代码
2017/10/10 Javascript
实例详解Node.js 函数
2018/06/10 Javascript
js实现简单选项卡功能
2020/03/23 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python调用Moxa PCOMM Lite通过串口Ymodem协议实现发送文件
2014/08/15 Python
简单的Python的curses库使用教程
2015/04/11 Python
Python实现中一次读取多个值的方法
2018/04/22 Python
python实现顺时针打印矩阵
2019/03/02 Python
python生成特定分布数的实例
2019/12/05 Python
Python装饰器结合递归原理解析
2020/07/02 Python
python urllib和urllib3知识点总结
2021/02/08 Python
HTML5新控件之日期和时间选择输入的实现代码
2018/09/13 HTML / CSS
英国网上购买门:Direct Doors
2018/06/07 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
贺卡寄语大全
2014/04/11 职场文书
教研处工作方案
2014/05/26 职场文书
个人先进材料范文
2014/12/30 职场文书
公安机关起诉意见书
2015/05/20 职场文书
《平移和旋转》教学反思
2016/02/19 职场文书
标准版个人借条怎么写?以及什么是借条?
2019/08/28 职场文书
创业计划书之美甲店
2019/09/20 职场文书
Qt数据库应用之实现图片转pdf
2022/06/01 Java/Android