open-cv机器视觉相关知识

embedded/2024/12/19 18:00:43/

sobel算子

  • cv2.Sobel(src, ddepth, dx, dy, ksize=3, scale=1, delta=0, borderType=None)

功能

  • 用于计算图像梯度(gradient)的函数

参数

  • src: 输入图像,它应该是灰度图像。
  • ddepth: 输出图像的所需深度(数据类型)。通常,你可以使用 -1 来表示与输入图像相同的深度,或者使用如 cv2.CV_64F 等来指定特定的深度。由于梯度计算可能产生负值,因此建议使用能够包含负数的数据类型。
  • dx: x 方向上的导数阶数。如果你想要计算 x 方向上的梯度,设置这个参数为 1;如果你不关心 x 方向上的梯度,设置这个参数为 0。
  • dy: y 方向上的导数阶数。如果你想要计算 y 方向上的梯度,设置这个参数为 1;如果你不关心 y 方向上的梯度,设置这个参数为 0。通常,你不会同时设置 dx 和 dy 都为 0。
  • ksize: Sobel 核的大小。它必须是 1、3、5、7 或 9 之一。这个参数决定了用于计算梯度的滤波器的大小。
  • scale: 可选参数,表示计算梯度时的缩放因子。默认值为 1,表示不进行缩放
  • delta: 可选参数,表示在将结果存储到目标图像之前要添加到结果中的可选增量值。
  • borderType: 像素外推方法,例如 cv2.BORDER_DEFAULT、cv2.BORDER_REFLECT 等

Laplacian算子

  • cv2.Laplacian(src, ddepth, ksize=1, scale=1, delta=0, borderType=None)

功能

用于计算图像的拉普拉斯算子(Laplacian)

参数

  • src: 输入图像,它应该是灰度图像。
  • ddepth: 输出图像的所需深度。这个参数决定了输出图像的深度(数据类型)。通常,你可以使用 -1 来表示与输入图像相同的深度,或者使用 cv2.CV_64F 等来指定特定的深度。由于拉普拉斯算子可能产生负值,因此通常建议使用能够包含负数的数据类型,如 cv2.CV_64F。
  • ksize: 算子的大小。它必须是 1、3、5 或 7 之一。这个参数决定了用于计算拉普拉斯算子的滤波器的大小。大小为 1 时表示使用 4 邻域拉普拉斯算子,其他大小则使用更大的滤波器。
  • scale: 可选参数,表示计算拉普拉斯算子时的缩放因子。默认值为 1,表示不进行缩放。你可以通过调整这个参数来放大或缩小拉普拉斯算子的结果。
  • delta: 可选参数,表示在将结果存储到目标图像之前要添加到结果中的可选增量值。默认值为 0,表示不添加增量。
  • borderType: 像素外推方法,例如 cv2.BORDER_DEFAULT、cv2.BORDER_REFLECT 等。这个参数决定了在图像边界处如何处理像素外推。当 ksize 大于 1 时,这个参数才有意义。

Canny算子

  • cv2.Canny(image, threshold1, threshold2, edges, apertureSize, L2gradient)

功能

  • 用于边缘检测的函数

参数

  • ‌image‌: 输入图像,它应该是一个灰度图像(单通道)。
  • ‌threshold1‌: 第一个阈值,用于边缘检测的滞后过程。这个值较低,用于确定边缘的初始点。
  • ‌threshold2‌: 第二个阈值,用于边缘检测的滞后过程。这个值较高,用于确定边缘的最终点。如果某个像素点的梯度值高于这个阈值,它被认为是边缘;如果低于这个值但高于threshold1,并且与高于threshold2的像素点相连,它也被认为是边缘。
  • ‌edges‌: 输出图像,与输入图像大小相同,但通常是二值图像(即只包含边缘和非边缘的像素)。
  • ‌apertureSize‌(可选,默认为3): Sobel算子的大小,它决定了梯度计算的邻域大小。它必须是1、3、5或7之一。
  • ‌L2gradient‌(可选,默认为False): 一个布尔值,指示是否使用更精确的L2范数进行梯度计算。如果为True,则使用L2范数(即欧几里得距离);如果为False,则使用L1范数(即曼哈顿距离)。L2范数通常更精确,但计算成本也更高。

findContours函数

  • cv2.findContours(image, mode, method, contour, hierarchy, offset.)

功能

  • 用于检测图像轮廓的函数

参数

  • ‌image‌ (必需): 输入图像,通常是一个二值图像(即只包含黑白两种颜色的图像),其中白色部分代表要检测的对象,黑色部分代表背景。也可以是非二值图像,但通常需要先进行某种形式的预处理,如阈值分割或边缘检测。
  • ‌mode‌ (可选,某些版本中必需): 轮廓检索模式。它决定了函数如何检测轮廓。常见的模式有:
  • cv2.RETR_EXTERNAL:只检索最外层轮廓。
  • cv2.RETR_LIST:检索所有轮廓,但不创建任何父子关系。
  • cv2.RETR_CCOMP:检索所有轮廓,并将它们组织为两层结构,其中顶层是连通域的外边界,底层是孔的内边界。
  • cv2.RETR_TREE:检索所有轮廓,并重建完整的层次结构。
  • ‌method‌ (可选,某些版本中必需): 轮廓近似方法。它决定了轮廓的近似程度。常见的方法有:
  • cv2.CHAIN_APPROX_NONE:存储所有的轮廓点,不进行任何近似。
  • cv2.CHAIN_APPROX_SIMPLE:压缩水平、垂直和对角线段,只保留它们的终点。
  • cv2.CHAIN_APPROX_TC89_L1、cv2.CHAIN_APPROX_TC89_KCOS:应用 Teh-Chin 链式近似算法的一种变体。
  • ‌contours‌ (某些版本中作为返回值): 在某些 OpenCV 版本中,这个参数是用来存储检测到的轮廓的。它是一个 Python 列表,其中每个元素都是一个轮廓,轮廓是由点组成的 NumPy 数组。
  • ‌hierarchy‌ (某些版本中作为返回值): 轮廓的层次结构信息。这是一个 NumPy 数组,包含了关于轮廓之间关系的信息(例如,哪个轮廓是另一个轮廓的父轮廓或子轮廓)。
  • ‌offset‌ (可选,默认为 (0, 0)): 轮廓点的偏移量。这个参数允许你在原始图像坐标系的基础上对轮廓点进行平移。

drawContours函数

  • cv2.drawContours(image, contours, contourIdx, color, thickness, lineType, hierarchy, maxLevel, offset)

功能

  • 用于在图像上绘制轮廓的函数

参数

  • image‌ (必需): 这是要在其上绘制轮廓的输入图像。它应该是一个三通道图像(例如,彩色图像)或单通道图像(例如,灰度图像),但通常是三通道图像,以便可以使用不同的颜色来绘制轮廓。
  • ‌contours‌ (必需): 这是一个 Python 列表,包含要绘制的所有轮廓。每个轮廓都是一个点集,通常是由 cv2.findContours() 函数返回的 NumPy 数组。
  • ‌contourIdx‌ (可选,默认为 -1): 指定要绘制的轮廓的索引。如果为 -1,则绘制所有轮廓。否则,只绘制指定索引处的轮廓。
  • ‌color‌ (可选,默认为 (0, 255, 0)): 轮廓的颜色。它是一个三元组,表示 BGR(蓝、绿、红)颜色空间中的颜色。例如,(0, 255, 0) 表示绿色。
  • ‌thickness‌ (可选,默认为 1): 轮廓的厚度。如果为正数,则轮廓将被绘制为指定厚度的线条。如果为负数(例如 -1),则轮廓内部将被填充。
  • ‌lineType‌ (可选,默认为 cv2.LINE_8): 线条的类型。它决定了轮廓线条的平滑度。cv2.LINE_8 表示 8-连通线,cv2.LINE_4 表示 4-连通线,cv2.LINE_AA 表示抗锯齿线。
  • ‌hierarchy‌ (可选,默认为 None): 轮廓的层次结构信息。这是一个 NumPy 数组,通常由 cv2.findContours() 函数返回。它包含了关于轮廓之间关系的信息,例如哪个轮廓是另一个轮廓的父轮廓或子轮廓。在绘制所有轮廓时,这个参数通常不需要。
  • ‌maxLevel‌ (可选,默认为 INT_MAX): 用于控制绘制轮廓的层次深度。当 contourIdx 参数为 -1 时,这个参数才有效。它决定了要绘制的轮廓的最大层次深度。
  • ‌offset‌ (可选,默认为 (0, 0)): 轮廓点的偏移量。这个参数允许你在原始图像坐标系的基础上对轮廓点进行平移。

透视变换函数

  • cv2.warpPerspective(src, M, dsize, dst=None, flags=cv2.INTER_LINEAR, borderMode=cv2.BORDER_CONSTANT, borderValue=None)

功能

  • 用于对图像进行透视变换的函数

参数

  • src: 输入图像,即你想要进行透视变换的源图像。
  • M: 透视变换矩阵,通常是一个 3x3 的矩阵,可以通过 cv2.getPerspectiveTransform() 函数计算得到。这个矩阵定义了源图像中的点如何映射到目标图像中的点。
  • dsize: 输出图像的尺寸,以 (width, height) 的形式表示。这是变换后图像的尺寸。
  • dst: 输出图像,这是一个可选参数。
  • flags: 插值方法。
  • borderMode: 边界填充方法。
  • borderValue: 边界颜色【可选】。

轮廓的外接边界框

外接矩形

外接圆


http://www.ppmy.cn/embedded/147080.html

相关文章

自动化立体仓库堆垛机SRM控制系统运行控制功能块开发设计

1、堆垛机SRM控制系统硬件组态如下图 G120变频器,通信报文111 2、堆垛机SRM控制系统HMI屏幕页面如下图 运行、起升、货叉相关参数设定 3、堆垛机SRM控制系统中相关变量定义如下图 行走报警 行走条码位置反馈 行走条码速度反馈 行走正极限 行走负极限 4、运行控制功能块代码…

机器学习基础:极大似然估计与交叉熵

极大似然法 考虑我们在训练一个参数为 ϕ \boldsymbol\phi ϕ、输入为 x \mathbf{x} x的模型 f [ x , ϕ ] \mathbf{f}[\mathbf{x},\boldsymbol{\phi}] f[x,ϕ]。如果转换一下视角,计算模型在给定输入 x \mathbf{x} x时对可能的输出 y \mathbf{y} y计算条件概率分布…

Visual studio中C/C++连接mysql

我使用的是Visual studio 2019连接的数据库,其他版本的VS操作应该类似 1.选择X64 因为我们使用的MySQL 提供的连接库(如 libmysql.dll 或 MySQL Connector)都是64位的,所以不能选择X86版本 2.找到本地安装MySQL的目录 MySQL默认…

知乎日报——第四周

「OC」知乎日报——第四周(完) 文章目录 「OC」知乎日报——第四周(完)本周总结收藏界面使用高度数组优化设置缓存总结 本周总结 本周使用FMDB完成了本地数据的创建,管理相关的点赞收藏信息,优化了tableVi…

【论文复刻】2021-2012年环境规制影响企业融资约束吗—基于新《环保法》的准自然实验(C刊《证券市场导报》)

一、数据来源:上市公司年报、《绿色信贷实施情况关键评价指标》,内含原始数据、处理代码和基准回归 二、数据范围: KZ指数、Treat、根据《绿色信贷实施情况关键评价指标》的环境和社会风险类型,本文将A、类和B类企业作为重污…

TCP 三次握手四次挥手

目录 TCP 三次握手四次挥手 一、TCP基础 二、TCP数据报结构 三、名词术语 四、TCP的三次握手 ✍️过 程描述: 举例说明: 总结: 思考 🤔 : 五、TCP的四次挥手 ✍️ 过 程描述: ☕️ 川 航图举例: 思考 🤔: TCP 三次握手四次挥手 一、TCP基础…

本机(Windows)和服务器(Linux)之间传输文件的命令

在本机上打开命令行(按 win R 键后输入CMD并回车)根据需求运行以下命令即可。 将本机文件上传至服务器的命令: scp -P 端口号 "D:\test\1.txt" rooti-2.gpushare.com:/hy-tmp/datasets 功能为将D盘根目录下test文件夹中的1.txt…

【Unity/HFSM】使用UnityHFSM实现输入缓冲(预输入)和打断机制

文章目录 前言预输入Animancer的InputBuffer:在UnityHFSM中实现InputBuffer: 打断机制 前言 参考Animancer在状态机中的InputBuffer,在UnityHFSM中实现类似的InputBuffer机制,同时扩展一个状态打断机制 插件介绍: A…