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

作者:Jackilina_Stone 时间:2022-06-11 10:08:37 

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变换检测直线的实现方法

来源:https://blog.csdn.net/wss794/article/details/93023013

标签:python,hough,检测直线
0
投稿

猜你喜欢

  • Linux系统(X64)安装Oracle11g完整安装图文教程另附基本操作

    2023-07-07 08:25:36
  • 如何给eWebEditor编辑器加上运行代码框功能

    2007-09-25 07:02:00
  • 如何编写CSS代码才能更有效率

    2007-11-07 18:51:00
  • Python爬虫抓取手机APP的传输数据

    2021-10-04 03:26:51
  • 用javascript替换URL中的参数值示例代码

    2023-08-30 03:58:09
  • 一篇文章教你用Python实现一键文件重命名

    2022-09-21 20:18:38
  • Python程序中的观察者模式结构编写示例

    2022-08-04 22:12:11
  • 如何对Python编译PyInstaller打包生成的exe文件进行反编译生成pyc、py源代码文件

    2023-11-06 00:10:33
  • Windows下Anaconda下载安装与配置教程分享

    2023-09-29 22:37:11
  • 完美解决jupyter由于无法import新包的问题

    2021-09-19 01:21:11
  • opencv实现图像缩放效果

    2022-10-24 04:52:28
  • 用Python实现读写锁的示例代码

    2022-09-19 13:51:01
  • Python eval的常见错误封装及利用原理详解

    2021-06-11 22:38:42
  • 交互设计实用指南系列(11)—减少记忆负担

    2010-03-29 13:12:00
  • python中利用xml.dom模块解析xml的方法教程

    2022-08-17 01:44:47
  • python selenium爬取斗鱼所有直播房间信息过程详解

    2023-11-19 07:00:11
  • python实现解数独程序代码

    2021-05-16 18:39:43
  • 表格艺术经典回顾

    2013-07-14 11:11:04
  • Python logging日志模块 配置文件方式

    2021-03-07 04:31:01
  • Python装饰器用法实例总结

    2023-11-18 07:37:36
  • asp之家 网络编程 m.aspxhome.com