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
投稿

猜你喜欢

  • Python多线程原理与用法实例剖析

    2023-07-22 13:40:37
  • MySQL sql_mode的使用详解

    2024-01-16 00:13:59
  • Python pandas库中的isnull()详解

    2022-06-06 20:58:01
  • Python 生成VOC格式的标签实例

    2021-09-09 04:39:07
  • python 保存float类型的小数的位数方法

    2021-06-28 05:44:12
  • sql注入数据库原理详情介绍

    2024-01-15 17:05:12
  • IE9硬件加速性能远超Chrome5.0和Firefox4.0

    2010-06-09 11:12:00
  • innodb_index_stats导入备份数据时报错表主键冲突的解决方法

    2024-01-19 19:33:51
  • Python实现Tab自动补全和历史命令管理的方法

    2022-06-16 10:12:46
  • Python文件操作和数据格式详解(简单简洁)

    2022-12-18 21:28:01
  • python相对企业语言优势在哪

    2021-08-27 23:37:21
  • python生成ppt的方法

    2021-11-08 11:50:48
  • JavaScript EasyPager 分页函数

    2024-06-16 21:14:31
  • Python最基本的数据类型以及对元组的介绍

    2022-03-26 07:04:07
  • Python 通过爬虫实现GitHub网页的模拟登录的示例代码

    2022-04-27 00:26:39
  • python中upper是做什么用的

    2023-10-30 15:53:29
  • 如何由Sybase向SQL Server移植数据库

    2009-01-20 15:56:00
  • VS 2010 Ultimate架构代码探索

    2010-05-02 20:38:00
  • 公共Hooks封装报表导出useExportExcel实现详解

    2024-04-28 09:21:36
  • 解析Python中的__getitem__专有方法

    2023-10-17 13:40:19
  • asp之家 网络编程 m.aspxhome.com