python hough变换检测直线的实现方法

 更新时间:2019年07月12日 11:38:05   作者:Jackilina_Stone  
这篇文章主要介绍了python hough变换检测直线的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1 原理

 2 检测步骤

将参数空间(ρ,θ) 量化成m*n(m为ρ的等份数,n为θ的等份数)个单元,并设置累加器矩阵,初始值为0;

对图像边界上的每一个点(x,y)带入ρ=xcosθ+ysinθ,求得每个θ对应的ρ值,并在ρ和θ所对应的单元,将累加器加1,即:Q(i,j)=Q(i,j)+1;

检验参数空间中每个累加器的值,累加器最大的单元所对应的ρ和θ即为直角坐标系中直线方程的参数。

 3 接口

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实现给微信公众号发送消息的方法

    python实现给微信公众号发送消息的方法

    这篇文章主要介绍了python实现给微信公众号发送消息的方法,结合实例形式分析了Python针对微信公众号接口操作的相关技巧,需要的朋友可以参考下
    2017-06-06
  • numpy.random.shuffle打乱顺序函数的实现

    numpy.random.shuffle打乱顺序函数的实现

    这篇文章主要介绍了numpy.random.shuffle打乱顺序函数的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • python实现的简单RPG游戏流程实例

    python实现的简单RPG游戏流程实例

    这篇文章主要介绍了python实现的简单RPG游戏流程,实例分析了Python实现RPG游戏流程的常用判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-06-06
  • 详解Python命令行解析工具Argparse

    详解Python命令行解析工具Argparse

    这篇文章主要为大家详细介绍了Python命令行解析工具Argparse的相关资料,感兴趣的小伙伴们可以参考一下
    2016-04-04
  • python 以16进制打印输出的方法

    python 以16进制打印输出的方法

    今天小编就为大家分享一篇python 以16进制打印输出的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • python爬虫之线程池和进程池功能与用法详解

    python爬虫之线程池和进程池功能与用法详解

    这篇文章主要介绍了python爬虫之线程池和进程池功能与用法,结合实例形式分析了Python基于线程池与进程池的爬虫功能相关操作技巧与使用注意事项,需要的朋友可以参考下
    2018-08-08
  • 深入Python函数编程的一些特性

    深入Python函数编程的一些特性

    这篇文章主要介绍了更为深入的Python函数编程的一些特性,本文来自于IBM官方开发者技术文档,需要的朋友可以参考下
    2015-04-04
  • python实现名片管理系统项目

    python实现名片管理系统项目

    这篇文章主要为大家详细介绍了python实现名片管理系统项目,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-04-04
  • Pytorch模型的保存/复用/迁移实现代码

    Pytorch模型的保存/复用/迁移实现代码

    本文整理了Pytorch框架下模型的保存、复用、推理、再训练和迁移等实现,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • python使用requests+excel进行接口自动化测试的实现

    python使用requests+excel进行接口自动化测试的实现

    在当今的互联网时代中,接口自动化测试越来越成为软件测试的重要组成部分,本文就来介绍了python使用requests+excel进行接口自动化测试的实现,感兴趣的可以了解一下
    2023-11-11

最新评论