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

原图如下:

检测结果:

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

时间: 2019-07-11

python 直线检测_python hough变换检测直线的实现方法相关推荐

  1. python 图像变化检测_python hough变换检测直线的实现方法

    1 原理 2 检测步骤 将参数空间(ρ,θ) 量化成m*n(m为ρ的等份数,n为θ的等份数)个单元,并设置累加器矩阵,初始值为0: 对图像边界上的每一个点(x,y)带入ρ=xcosθ+ysinθ,求得 ...

  2. hough变换检测直线 matlab,Matlab实现Hough变换检测图像中的直线

    Hough变换的原理: 将图像从图像空间变换至参数空间,变换公式如下: 变换以后,图像空间与参数空间存在以下关系: 图像空间中的一点在参数空间是一条曲线,而图像空间共线的各点对应于参数空间交于一点的各 ...

  3. 基于Hough变换的直线和圆的检测与提取

    学数字图像处理有挺长时间了,正好最近这段时间有空,学习了一下Hough变换,作了几个比较简单的东西,分享出来,希望能和大家一起学习,也希望各位能提出宝贵的意见,共同进步,文采不好,欢迎拍砖,下面正式进 ...

  4. Hough变换检测直线与圆的原理

    霍夫变换的基本原理 霍夫变换(Hough Transform)可以理解为图像处理中的一种特征提取技术,通过投票算法检测具有特定形状的物体.霍夫变换运用两个坐标空间之间的变换将在一个空间中具有相同形状的 ...

  5. hough变换检测圆周_一文解读经典霍夫变换(Hough Transform)

    引言 本文讲述霍夫变换的一些内容,并加入一些理解性东西,参考了部分博客等相关性内容.希望能对霍夫变换有所了解,也希望看到的人如果发现错误及时帮忙纠正.博主水平有限,还望赐教. 历史和简介 历史 霍夫变 ...

  6. MATLAB编程 利用Hough变换检测圆

    MATLAB代码下载:利用Hough变换检测圆.docx-专业指导文档类资源-CSDN下载利用Hough变换检测圆,可以设置要检测圆的个数,最小尺寸.更多下载资源.学习资料请访问CSDN下载频道.ht ...

  7. 使用Python,OpenCV和Hough圆检测图像中的圆

    使用Python,OpenCV和Hough圆检测图像中的圆 1. 效果图 2. cv2.HoughCircles(image, method, dp, minDist) 3. 源码 参考 前几篇博客中 ...

  8. matlab人眼虹膜定位,基于Hough变换的人眼虹膜定位方法

    基于Hough变换的人眼虹膜定位方法 matlab 2021-2-12 下载地址 https://www.codedown123.com/64459.html 图像处理源代码,基于Hough变换的人眼 ...

  9. python 检测直线 交点_Python+OpenCV图像处理——实现直线检测

    简介: 1.霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像中分离出具有某种相同特征的几何形状(如,直线 ...

  10. 直线检测之Hough变换(霍夫变换)

    霍夫变换,英文名称Hough Transform,作用是用来检测图像中的直线或者圆等几何图形的. 给定一张图像中的n个点,假设我们希望找到这些点中一个位于直线上的点集,一种可行的解决方法是,先找到所有 ...

最新文章

  1. MATLAB_8-边缘检测_黄晓明圈出人脸
  2. 深度解析:mPaaS 3.0全新组件
  3. 人脸识别技术大总结(1)——Face Detection Alignment
  4. Redis介绍及常用应用场景介绍
  5. 报告分析|2021移动社交行业有哪些新风向?
  6. 【Notes6】ajaxjson,校验用户名,自动提示,CORS,/swagger开发rest,Websocket,DNS
  7. Python: Python中的AttributeError错误
  8. Android之发送短信后按钮(60秒)变灰色每隔一秒递减显示
  9. delphi 最全日期格式_DateUtils时间单元说明
  10. 智慧城市发展未来PSD分层海报模板|科技突破你的想象!
  11. 20180908 2018-2019-2 《密码与安全新技术专题》第3周作业
  12. BZOJ 2243: [SDOI2011]染色(树链剖分)
  13. 5.2 LSTM、GRU tensorflow使用
  14. VS2017使用github
  15. 免费高清可商用图片素材站推荐
  16. 多种好看好玩的词云例子Example
  17. JAVA-数字9出现的次数
  18. 听声变位测试软件,刺激战场:听声辩位其实有很大的学问,想了解的朋友请进来...
  19. 史上最简单的springcloud微服务入门实例,满足企业日常需求,开箱即用,工资翻倍不是梦...
  20. dedecms 的采集

热门文章

  1. 【转】其他人的BUG
  2. linux虚拟机上挂载U盘
  3. 使用cp命令拷贝目录下指定文件外的其他文件
  4. 关于VMware的Server版卸载须知
  5. 控制反转和依赖注入的理解(通俗易懂)_Spring 的本质系列之依赖注入_一点课堂(多岸学院)...
  6. 笔记本cpu温度高怎么办_夏天面团温度高怎么办?几个技巧让面温立马降下来
  7. java arraylist 字符串数组_java中String,数组,ArrayList三者之间的转换
  8. nyoj(简单数学)Oh, my Paper!
  9. 中国电子学会c语言考试题库,计算机基础考试试题及答案
  10. 二进制转bcd码c语言程序,微机课设求助 BCD码转换为二进制