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基础教程之udp端口扫描
Feb 10 Python
Python subprocess模块详细解读
Jan 29 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
Django 接收Post请求数据,并保存到数据库的实现方法
Jul 12 Python
Win10系统下安装labelme及json文件批量转化方法
Jul 30 Python
详解Python利用random生成一个列表内的随机数
Aug 21 Python
python的命名规则知识点总结
Oct 04 Python
python求绝对值的三种方法小结
Dec 04 Python
PyTorch实现AlexNet示例
Jan 14 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
Python自动巡检H3C交换机实现过程解析
Aug 14 Python
Python用tkinter实现自定义记事本的方法详解
Mar 31 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
全国FM电台频率大全 - 25 云南省
2020/03/11 无线电
php中error与exception的区别及应用
2014/07/28 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
Javascript技术技巧大全(五)
2007/01/22 Javascript
javascript静态的url如何传递
2007/05/03 Javascript
一个小型js框架myJSFrame附API使用帮助
2008/06/28 Javascript
JS中confirm,alert,prompt函数使用区别分析
2010/04/01 Javascript
jQuery 幻灯片插件(带缩略图功能)
2011/01/24 Javascript
读jQuery之十二 删除事件核心方法
2011/07/31 Javascript
js螺旋动画效果的具体实例
2013/11/15 Javascript
jQuery中val()方法用法实例
2014/12/25 Javascript
jQuery和AngularJS的区别浅析
2015/01/29 Javascript
基于Bootstrap 3 JQuery及RegExp的表单验证功能
2017/02/16 Javascript
js省市区级联查询(插件版&无插件版)
2017/03/21 Javascript
ES5学习教程之Array对象
2017/04/01 Javascript
详解Vue 开发模式下跨域问题
2017/06/06 Javascript
关于页面刷新vuex数据消失问题解决方案
2017/07/03 Javascript
Vue动态修改网页标题的方法及遇到问题
2019/06/09 Javascript
vue通过数据过滤实现表格合并
2020/11/30 Javascript
[00:52]玛尔斯技能全介绍
2019/03/06 DOTA
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
对python 各种删除文件失败的处理方式分享
2018/04/24 Python
简单了解Python3 bytes和str类型的区别和联系
2019/12/19 Python
Python中求对数方法总结
2020/03/10 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
学前教育求职自荐信范文
2013/12/25 职场文书
最新的咖啡店创业计划书
2013/12/30 职场文书
酒店经理职责
2014/01/30 职场文书
《蜗牛》教学反思
2014/02/18 职场文书
春节联欢晚会主持词范文
2014/03/24 职场文书
村长党的群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
大学生在校表现评语
2014/12/31 职场文书
企业战略合作意向书
2015/05/08 职场文书
教师远程培训心得体会
2016/01/09 职场文书
Html5大屏数据可视化开发的实现
2021/06/11 HTML / CSS