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获取豆瓣电影简介代码分享
Jan 16 Python
Python可跨平台实现获取按键的方法
Mar 05 Python
Python递归遍历列表及输出的实现方法
May 19 Python
python制作websocket服务器实例分享
Nov 20 Python
详解python上传文件和字符到PHP服务器
Nov 24 Python
python实现求最长回文子串长度
Jan 22 Python
python使用Turtle库绘制动态钟表
Nov 19 Python
python多进程下实现日志记录按时间分割
Jul 22 Python
浅谈对pytroch中torch.autograd.backward的思考
Dec 27 Python
用python介绍4种常用的单链表翻转的方法小结
Feb 24 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
Django全局启用登陆验证login_required的方法
Jun 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
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
CI(CodeIgniter)框架配置
2014/06/10 PHP
php提交post数组参数实例分析
2015/12/17 PHP
详解PHP中的null合并运算符
2015/12/30 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
基于jquery的当鼠标滚轮到最底端继续加载新数据思路分享(多用于微博、空间、论坛 )
2011/10/10 Javascript
JS清除IE浏览器缓存的方法
2013/07/26 Javascript
file控件选择上传文件确定后触发的js事件是哪个
2014/03/17 Javascript
绑定回车enter事件代码
2014/05/18 Javascript
JSON相关知识汇总
2015/07/03 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
javascript数组常用方法汇总
2016/09/10 Javascript
利用adb shell和node.js实现抖音自动抢红包功能(推荐)
2018/02/22 Javascript
js实现购物车功能
2018/06/12 Javascript
Angular之jwt令牌身份验证的实现
2020/02/14 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
Python列表推导式的使用方法
2013/11/21 Python
Python判断变量是否已经定义的方法
2014/08/18 Python
Django 使用logging打印日志的实例
2018/04/28 Python
Python实现的序列化和反序列化二叉树算法示例
2019/03/02 Python
Django框架模板的使用方法示例
2019/05/25 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
matlab、python中矩阵的互相导入导出方式
2020/06/01 Python
解决tensorflow模型压缩的问题_踩坑无数,总算搞定
2021/03/02 Python
韩国现代百货官网:Hmall
2018/03/21 全球购物
法国二手手袋、手表和奢侈珠宝购物网站:Collector Square
2018/07/05 全球购物
Prototype如何更新局部页面
2013/03/03 面试题
面试后感谢信
2014/02/01 职场文书
七年级政治教学反思
2014/02/03 职场文书
教研处工作方案
2014/05/26 职场文书
大一工商管理职业生涯规划:有梦最美,行动相随
2014/09/18 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
大学生个人年度总结范文
2015/02/15 职场文书
公司表扬稿范文
2015/05/05 职场文书
2016年禁毒宣传活动总结
2016/04/05 职场文书
总结三种用 Python 作为小程序后端的方式
2022/05/02 Python