Python-OpenCV 笔记2 – 霍夫变换(Hough)


1、标准霍夫变换 HoughLinesP

函数原型:

HoughLines(image, rho, theta, threshold, lines=None, srn=None, stn=None, min_theta=None, max_theta=None)
  • image:8位、二值单通道图片
  • rho:直线半径的搜索步长,单位为像素
  • theta:直线角度使得搜索步长,单位为弧度
  • threshold:累加阈值,只有属于同一直线的点数超过该阈值才会被检测为直线
  • lines :存储检测结果,直线用半径和角度表示
  • min_theta :检测直线的最小角度,[0, max_theta]
  • max_theta :检测直线的最大角度
import cv2
import numpy as np# 读取图片>转为灰度图>canny边缘检测>概率霍夫变换
img = cv2.imread('1.jpg')
gray = cv2.cvtColor(img,cv.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
lines = cv2.HoughLines(edges,1,np.pi/180,200)# 根据极坐标计算平面坐标
for line in lines:rho,theta = line[0]a = np.cos(theta)b = np.sin(theta)x0 = a*rhoy0 = b*rhox1 = int(x0 + 1000*(-b))y1 = int(y0 + 1000*(a))x2 = int(x0 - 1000*(-b))y2 = int(y0 - 1000*(a))# 画线cv2.line(img,(x1,y1),(x2,y2),(0,0,255),2)cv2.imshow('houghlines', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2、概率霍夫变换 HoughLinesP

函数原型:

HoughLinesP(image, rho, theta, threshold, lines=None, minLineLength=None, maxLineGap=None)
  • image:8位、二值单通道图片
  • rho:直线半径的搜索步长,单位为像素
  • theta:直线角度使得搜索步长,单位为弧度
  • threshold:累加阈值,只有属于同一直线的点数超过该阈值才会被检测为直线
  • lines :存储检测结果1x1x4的矩阵,直线用两点坐标表示(x1, y1, x2, y2)
  • minLineLength :检测为直线的最短长度,单位为像素
  • maxLineGap:直线断点的最大距离
import cv2
import numpy as np  # 读取图像>高斯模糊>边缘检测
img = cv2.imread("1.jpg")
img = cv2.GaussianBlur(img, (3,3), 0)
edges = cv2.Canny(img, 50, 150, apertureSize = 3)# 概率霍夫变换
minLineLength = 200
maxLineGap = 15
lines = cv2.HoughLinesP(edges, 1, np.pi/180, 80, minLineLength, maxLineGap)
# lines = np.squeeze(lines)# 画线
for line in lines:x1,y1,x2,y2 = line[0]cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)cv2.imshow('HoughLinesP', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

Python-OpenCV 笔记3 -- 霍夫变换(Hough)相关推荐

  1. python+OpenCV笔记(二十四):Shi-Tomasi角点检测

    Shi-Tomasi角点检测 原理 python+OpenCV笔记(二十二):角点检测原理(Harris角点检测原理.Shi-Tomasi角点检测原理)https://blog.csdn.net/qq ...

  2. python+OpenCv笔记(十三):边缘检测——Sobel检测算子

    Sobel检测算子 概述: Sobel边缘检测算法比较简单,实际应用中效率比canny边缘检测效率要高,但是边缘不如Canny检测的准确,但是很多实际应用的场合,sobel边缘却是首选,Sobel算子 ...

  3. Opencv 笔记8 霍夫变换

    一.霍夫变换Hough Hough变换是图像处理中从图像中识别几何形状的基本方法之一.Hough变换的基本原理在于利用点与线的对偶性,将原始图像空间的给定的曲线通过曲线表达形式变为参数空间的一个点.这 ...

  4. python+OpenCV笔记(三十七):检测运动物体——使用MOG/KNN背景差分器

    目录 一.基本背景差分器 二.MOG背景差分器 流程 代码编写 三.KNN背景差分器 目前,许多运动检测技术都是基于简单的背景差分概念的,即假设摄像头(视频)的曝光和场景中的光照条件是稳定的,当摄像头 ...

  5. python+OpenCV笔记(三十五):特征匹配——基于FLANN的匹配、基于FLANN进行单应性匹配

    目录 一.基于FLANN的匹配 FLANN匹配流程: 代码编写 二.基于FLANN进行单应性匹配 什么是单应性? FLANN进行单应性匹配流程 代码编写 FLANN库全称是Fast Library f ...

  6. python+OpenCv笔记(六):图像的几何变换(缩放、平移、旋转、仿射、透射、金字塔)

    一.图像的缩放 OpenCv API: cv2.resize(src, dsize, fx, fy, interpolation) 参数: src:输入的图像 dsize:绝对尺寸,直接将图像调整为指 ...

  7. python+OpenCv笔记(七):图像的形态学操作(腐蚀与膨胀、开闭运算、礼帽与黑帽)

    一.腐蚀与膨胀 腐蚀就是原图中高亮的部分被蚕食,效果图拥有比原图更小的高亮区域. 腐蚀的作用是:消除物体边界点,使目标缩小,可以消除小于结构元素的噪声点. 膨胀就是使原图中高亮的部分扩张,效果图拥有比 ...

  8. python+OpenCv笔记(十七):模板匹配

    模板匹配 OpenCV框架提供了用于对象检测.跟踪和计数的许多不同方法.其中,模板匹配是OpenCV中最基本的对象检测方法之一. OpenCV API: res = cv.matchTemplate( ...

  9. python+OpenCv笔记(二):绘制几何图形

    一.绘制直线 cv.line(img,pt1,pt2,color,thickness,lineType) 参数: img:要绘制的图像 pt1 pt2:绘制的起点与终点 color:颜色 thickn ...

  10. python+OpenCV笔记(二十):滤波函数——filter2D

    filter2D用于将自定义的滤波器应用于图像,需要为这个函数提供的一个重要参数就是核矩阵. 该函数非常强大,可以生成很多种不同的结果,包括与之前的模糊函数相同的结果,不同的核还可以形成很多不同的滤波 ...

最新文章

  1. SAP RETAIL 通过分配表创建UB STO单据
  2. 中兴5250交换机配置手册_TSN工业交换机中文说明
  3. html间隔代码_HTML+CSS基础入门开发,经典Loading加载缩放动画特效
  4. Linux——ubuntu硬盘分区
  5. go 语言 php并发,go 语言并发
  6. 广告智能定向技术lookalike
  7. ad19做直插封装 ipc_AD19的IPC封装向导使用
  8. 2021-2025年中国船用炉灶行业市场供需与战略研究报告
  9. ArcGIS制图技巧系列(2)地形渲染
  10. verilog之状态机详细解释(二)
  11. stm32f10x 安装包_Keil5 Pack Installer下载_Keil5 Pack 离线安装包下载 2.2.0 官方正式版_当载软件站...
  12. Java实现网页滑动验证与短信验证码案例精析
  13. Java随笔记 - 断包和粘包 解决方法
  14. L298N驱动直流电机转动
  15. 青蛙的约会—POJ1061
  16. Mac必备神器之Go2Shell
  17. 贪心背后的故事Codeforces 995B(Suit and Tie)
  18. AD_Copy Room
  19. 我帮您_学习资源库,给您学不完的精彩
  20. 一键改计算机名字,上万文件如何快速批量重命名?原来只要一键就能搞定!-批量改文件名...

热门文章

  1. Python学习笔记(二)——HelloWorld
  2. 如何确保TCP协议传输稳定可靠?
  3. Martini源码剖析
  4. 04-String课后动手动脑
  5. sublime text 自动保存
  6. 让Windows2008R2也能进入手柄设置(游戏控制器设置)
  7. 利用Spring框架封装的JavaMail现实同步或异步邮件发送
  8. Phpcms之核心目录phpcms
  9. 20175213 2018-2019-2 《Java程序设计》第9周学习总结
  10. nginx 中location中root和alias的区别