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动态加载变量示例分享
Feb 17 Python
python实现图书管理系统
Mar 12 Python
Numpy 改变数组维度的几种方法小结
Aug 02 Python
Django CBV类的用法详解
Jul 26 Python
PyCharm永久激活方式(推荐)
Sep 22 Python
使用keras2.0 将Merge层改为函数式
May 23 Python
Python单元测试及unittest框架用法实例解析
Jul 09 Python
Flask缓存静态文件的具体方法
Aug 02 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 Python
Python修改DBF文件指定列
Dec 19 Python
python多线程爬取西刺代理的示例代码
Jan 30 Python
Python爬虫入门案例之回车桌面壁纸网美女图片采集
Oct 16 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
JS读取XML文件示例代码
2013/11/15 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
JS+CSS实现大气的黑色首页导航菜单效果代码
2015/09/10 Javascript
12种JavaScript常用的MVC框架比较分析
2015/11/16 Javascript
angularjs指令之绑定策略(@、=、&)
2017/04/13 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
node中IO以及定时器优先级详解
2019/05/10 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
SpringBoot+Vue 前后端合并部署的配置方法
2020/12/30 Vue.js
[03:20]2015国际邀请赛全明星表演赛
2015/08/08 DOTA
跟老齐学Python之Python安装
2014/09/12 Python
python检测远程udp端口是否打开的方法
2015/03/14 Python
Python下的Softmax回归函数的实现方法(推荐)
2017/01/26 Python
使用Python对MySQL数据操作
2017/04/06 Python
python中nan与inf转为特定数字方法示例
2017/05/11 Python
Python入门_学会创建并调用函数的方法
2017/05/16 Python
Python常用内置模块之xml模块(详解)
2017/05/23 Python
详解Django解决ajax跨域访问问题
2018/08/24 Python
在python下读取并展示raw格式的图片实例
2019/01/24 Python
对DataFrame数据中的重复行,利用groupby累加合并的方法详解
2019/01/30 Python
Python实现从SQL型数据库读写dataframe型数据的方法【基于pandas】
2019/03/18 Python
Django上使用数据可视化利器Bokeh解析
2019/07/31 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
Django如何批量创建Model
2020/09/01 Python
Python使用struct处理二进制(pack和unpack用法)
2020/11/12 Python
MIS软件工程师的面试题
2016/04/22 面试题
尽职尽责村干部自我鉴定
2014/01/23 职场文书
电子商务专业学生职业生涯规划
2014/03/07 职场文书
求职信内容怎么写
2014/05/26 职场文书
大学生见习报告范文
2014/11/03 职场文书
2014教师专业技术工作总结
2014/12/03 职场文书
数学考试作弊检讨书300字
2015/02/16 职场文书
入党个人总结范文
2015/03/02 职场文书
党员电教片《信仰》心得体会
2016/01/15 职场文书
php字符串倒叙
2021/04/01 PHP