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使用django获取用户IP地址的方法
May 11 Python
python3.5基于TCP实现文件传输
Mar 20 Python
Python实现Dijkstra算法
Oct 17 Python
python3+opencv3识别图片中的物体并截取的方法
Dec 05 Python
Python字符串逆序的实现方法【一题多解】
Feb 18 Python
Python3分析处理声音数据的例子
Aug 27 Python
将python2.7添加进64位系统的注册表方式
Nov 20 Python
Python datetime 格式化 明天,昨天实例
Mar 02 Python
基于Tensorflow一维卷积用法详解
May 22 Python
详解用selenium来下载小姐姐图片并保存
Jan 26 Python
Python制作动态字符画的源码
Aug 04 Python
Python OpenCV形态学运算示例详解
Apr 07 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 php_openssl.dll的作用
2013/07/01 PHP
php中getservbyport与getservbyname函数用法实例
2014/11/18 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
PHP实现上传图片到 zimg 服务器
2016/10/19 PHP
用jQuery扩展自写的 UI导航
2010/01/13 Javascript
给jqGrid数据行添加修改和删除操作链接(之一)
2011/11/04 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
jQuery控制网页打印指定区域的方法
2015/04/07 Javascript
JS实现下拉菜单赋值到文本框的方法
2015/08/18 Javascript
Javascript如何判断数据类型和数组类型
2016/06/22 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
通过js给网页加上水印背景实例
2019/06/17 Javascript
Python中使用Inotify监控文件实例
2015/02/14 Python
Python批量修改文本文件内容的方法
2016/04/29 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python生成随机密码的方法
2017/06/16 Python
Python和Java进行DES加密和解密的实例
2018/01/09 Python
Python去除、替换字符串空格的处理方法
2018/04/01 Python
python解释器pycharm安装及环境变量配置教程图文详解
2020/02/26 Python
对Python中 \r, \n, \r\n的彻底理解
2020/03/06 Python
Jupyter加载文件的实现方法
2020/04/14 Python
浅析Python中字符串的intern机制
2020/10/03 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
html5 利用重力感应实现摇一摇换颜色可用来做抽奖等等
2014/05/07 HTML / CSS
Aosom西班牙:家具在线商店
2020/06/11 全球购物
巴西24小时在线药房:Drogasil
2020/06/20 全球购物
C和C++经典笔试题附答案解析
2014/08/18 面试题
什么是属性访问器
2015/10/26 面试题
仓库组长岗位职责
2014/01/29 职场文书
新闻学专业职业生涯规划范文:我的人生我做主
2014/09/12 职场文书
学生检讨书范文
2014/10/30 职场文书
员工自我评价范文
2015/03/11 职场文书
Golang 使用Map实现去重与set的功能操作
2021/04/29 Golang
使用Python解决图表与画布的间距问题
2022/04/11 Python