自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(231)
  • 收藏
  • 关注

翻译 OpenCV教程:图形 API(gapi 模块) OpenCV v4.8.0

本教程介绍如何使用 G-API 构建混合视频处理流水线,其中深度学习与图像处理有效结合,以最大限度地提高整体吞吐量。这是一个端到端的教程,将一个现有的示例算法移植到 G-API 上,涵盖了这一转换过程背后的基本直觉,并探讨了图模型带来的好处。在本教程中,我们展示了如何将 Luxonis DepthAI 库与 G-API 结合使用。在本教程中,我们使用 G-API 构建了一个复杂的计算机视觉/深度学习混合视频处理管道。在本节中,您将了解基于图的图像处理以及如何使用 G-API 模块。

2023-11-11 22:12:50 285

翻译 深度神经网络——转换 TensorFlow 分段模型并使用 OpenCV 启动 OpenCV v4.8.0

要将图像传入 TF 模型,我们只需构建一个适当的形状,其余的图像预处理将在 feature_extractor.py 中描述并自动调用。21 个预测通道(21 代表 PASCAL VOC 类别的数量)中的每个预测通道都包含概率,表示像素对应 PASCAL VOC 类别的可能性。模块允许在 PASCAL VOC 数据集上运行完整的评估管道,并测试 DeepLab MobileNet 模型的执行情况。的第一步是获取冻结的 TF 模型图。在这一步中,我们将分割蒙板的概率与预测类别的适当颜色进行映射。

2023-11-11 22:08:11 237

翻译 深度神经网络——转换 TensorFlow 检测模型并使用 OpenCV Python 发布 OpenCV v4.8.0

要启动测试过程,我们需要提供适当的模型配置。我们将使用 TensorFlow 对象检测 API 中的 ssd_mobilenet_v1_coco.config。让我们简单了解一下用 OpenCV API 转换 TensorFlow 模型的流程中涉及的关键概念。的第一步是获取冻结的 TF 模型图。要使用下面的代码进行实验,您需要安装一组库。,我们将使用相应的 samples/dnn/tf_text_graph_ssd.py。函数中,我们将提取模型归档中提供的。为了提供模型推论,我们将使用下面的。

2023-11-11 18:14:44 207

翻译 深度神经网络——转换 TensorFlow 分类模型并用 OpenCV Python 发布 OpenCV v4.8.0

首先减去平均值,然后将像素值乘以定义的比例。TF 和 OpenCV 模型的评估结果(准确率、推理时间、L1)将写入日志文件。推理时间值也将以图表形式显示,以概括所获得的模型信息。的第一步是获取冻结的 TF 模型图。为了提供模型推理,我们将使用下面与 ImageNet 类 ID 335 相对应的。如果您只想运行评估或测试模型管道,可以跳过 "模型转换管道 "教程部分。从实验中可以看出,OpenCV 和 TF 的推理结果相同。函数中的图像预处理流程,我们将平均值乘以 127.5。

2023-11-05 15:33:18 136

翻译 深度神经网络——转换 PyTorch 分割模型并使用 OpenCV 启动 OpenCV v4.8.0

需要注意的是,cv2.dnn.blobFromImage 首先要减去平均值,然后才对像素值进行缩放。推理时间值也将以图表形式显示,以概括所获得的模型信息。在 21 个预测通道(21 代表 PASCAL VOC 类别的数量)中,每个预测通道都包含概率,表示像素对应于 PASCAL VOC 类别的可能性有多大。和分割模型与 OpenCV API 的转换流水线涉及的关键点是相同的。在这一步中,我们将分割掩码中的概率与预测类别的适当颜色进行映射。如果您只想运行评估或测试模型管道,可以跳过 "模型转换管道 "部分。

2023-11-05 15:19:09 174

翻译 深度神经网络——转换 PyTorch 分类模型并用 OpenCV C++ 启动 OpenCV v4.8.0

为了对预测结果进行标签解码,我们还需要 imagenet_classes.txt 文件,其中包含 ImageNet 类别的完整列表。让我们简要回顾一下使用 OpenCV API 转换 PyTorch 模型的流程中涉及的关键概念。要使用下面的代码进行实验,您需要安装一组库。为了提供模型推理,我们将使用下面与 ImageNet 类 ID 335 相对应的。我们将以 ResNet-50 架构为例,探讨上述要点。中的平均值,然后才将像素值乘以比例。因此,转换后的 ResNet-50 将保存在。

2023-11-05 14:57:18 67

翻译 深度神经网络——转换 PyTorch 分类模型并用 OpenCV Python 启动 OpenCV v4.8.0

PyTorch 和 OpenCV 模型的评估结果(准确率、推理时间、L1)将写入日志文件。推理时间值也将以图表形式显示,以概括所获得的模型信息。为了对预测结果进行标签解码,我们还需要 imagenet_classes.txt 文件,其中包含 ImageNet 类别的完整列表。要使用下面的代码进行实验,您需要安装一组库。关键字定义您是想用某些特定值参数化模型测试过程,还是使用默认值,例如。如果只想运行评估或测试模型管道,可以跳过 "模型转换管道 "部分。我们将以 ResNet-50 架构为例,探讨上述要点。

2023-11-05 14:41:39 58

翻译 深度神经网络——基于 DNN 的人脸检测与识别 OpenCV v4.8.0

检测输出的人脸是一个 CV_32F 类型的二维数组,其行是检测到的人脸实例,列是人脸的位置和 5 个人脸地标。获得两张人脸图像的人脸特征 feature1 和 feature2 后,运行下面的代码来计算两张人脸的身份差异。例如,如果余弦距离大于或等于 0.363,或 normL2 距离小于或等于 1.128,则两张脸具有相同的身份。分别代表右眼、左眼、鼻尖、右嘴角和左嘴角的坐标。人脸检测后,运行以下代码从面部图像中提取人脸特征。分别为人脸边界框的左上角坐标、宽度和高度,训练并提供的人脸识别模型。

2023-11-05 14:24:24 231

翻译 深度神经网络——高级应用程序接口: 文本检测模型和文本识别模型 OpenCV v4.8.0

在本教程中,我们将详细介绍 TextRecognitionModel 和 TextDetectionModel 的 API。按照上述步骤操作后,很容易就能得到输入图像的检测结果。然后,您可以对文本图像进行转换和裁剪,以便进行识别。只支持基于 CNN+RNN+CTC 的算法,并提供了 CTC 的贪婪解码方法。步骤 1. 加载带有词汇表的图像和模型。可以找到更多模型,这些模型来自。步骤 2.a 设置参数(DB)训练更多模型,也可以用。步骤 1. 加载图片和模型。发布更多 DB 模型。测试图像的下载链接可在。

2023-11-05 13:48:42 275

翻译 深度神经网络——如何运行自定义 OCR 模型 OpenCV v4.8.0

DenseNet_CTC 参数最小,FPS 最佳,适合对计算成本非常敏感的边缘设备。如果计算资源有限,又想获得更高的准确率,VGG_CTC 是一个不错的选择。是训练您自己的 OCR 模型的良好起点。在本教程中,我们首先介绍如何获取自定义 OCR 模型,然后介绍如何转换自己的 OCR 模型,使其能够被 opencv_dnn 模块正确运行。文本识别模型的输入是文本检测模型的输出,这导致文本检测的性能在很大程度上影响文本识别的性能。文本识别模型的性能是在 OpenCV DNN 上测试的,不包括文本检测模型。

2023-11-05 13:26:22 71

翻译 深度神经网络——支持自定义深度学习层 OpenCV v4.8.0

因此,使用最新版本的 Caffe 或 OpenCV,你将获得填充边框的偏移结果。但是,您可能会遇到这样的问题:您的网络无法使用 OpenCV 导入,因为您网络的某些层无法在 OpenCV 的深度学习引擎中实现。层的名称、类型、权重和超参数存储在本地框架在训练过程中生成的文件中。构建神经网络的新方法通常会引入新的层类型。这些层可能是对现有层的修改,也可能是对杰出研究想法的实现。下面的示例展示了如何在 Python 中自定义 OpenCV 的图层。如果你的层有可训练的权重,它们将已存储在层的成员。

2023-11-05 13:18:23 71

翻译 深度神经网络——如何在浏览器中运行深度网络 OpenCV v4.8.0

应用程序的主循环接收来自摄像头的帧,并对帧上检测到的每个人脸进行识别。教程参考了人脸检测和人脸识别模型管道的示例。人脸检测网络将 BGR 图像作为输入,并生成一组可能包含人脸的边界框。我们需要做的只是选择具有较强置信度的边界框。维单位向量,将输入的人脸表示为单位多维球体上的一个点。因此,两个人脸之间的差异就是两个输出向量之间的夹角。输入 blob 越大,检测到的人脸可能越少。将新的特征向量与已注册的特征向量匹配。返回匹配度最高的人的姓名。,命名一个被识别为未知的人。的 RGB 人脸图像。

2023-11-05 12:56:36 80

翻译 深度神经网络——YOLO DNNs OpenCV v4.8.0

在本文中,您将学习如何使用 yolo_object_detection(通过设备捕获、视频和图像实时使用 OpenCV dnn 模块的示例)来使用 opencv_dnn 模块。问题和建议请发送电子邮件至 Alessandro de Oliveira Faria [email protected] 或 OpenCV 团队。语言编写的对象检测模型的通用示例。我们将在下图中演示该示例的结果。使用图像或视频文件执行。

2023-11-05 12:46:11 49

翻译 深度神经网络——如何在 Android 设备上运行深度网络 OpenCV v4.8.0

我们的示例将从摄像头获取图片,将其转发到深度网络,并接收一组矩形、类别标识符和置信度值(范围为。在本教程中,你将了解如何使用 OpenCV 深度学习模块在安卓设备上运行深度学习网络。打开 Android Studio。插入设备并运行项目。在我们进行下一步之前,它应已安装并成功启动。使用 "Empty Template "模板。恭喜您 现在我们可以使用 OpenCV 制作一个示例了。如遇到问题,请阅读《

2023-11-05 12:38:00 219

翻译 深度神经网络——利用 OpenVINO 使用 OpenCV OpenCV v4.8.0

自 2021.1.1 版发布后,OpenVINO 不再提供预编译的 OpenCV。如果您直接使用 OpenVINO 运行时或 OpenVINO 样本,这一变化不会对您产生影响:它与 OpenCV 没有很强的依赖关系。但是,如果您使用 Open Model Zoo 演示或 OpenVINO 运行时作为 OpenCV DNN 后端,则需要获取 OpenCV 版本。本教程提供了如何在OpenVINO中使用OpenCV的安装指南。

2023-11-05 11:29:51 204

翻译 深度神经网络——如何为Halide后端调度网络 OpenCV v4.8.0

在本教程中,我们将介绍在OpenCV深度学习模块中使用Halide后端调度网络的方法。通过层融合,我们可以只调度融合集的顶层。有时,网络会使用阻塞结构,这意味着某些层是相同或非常相似的。如果想根据平铺或矢量化因素对不同层应用相同的调度,可在调度文件开头的。但如果特定图层需要手动调度,则可以混合使用手动和自动调度方式。编写调度文件,跳过需要自动调度的图层。调度配置文件以 YAML 文件表示,其中每个节点都是一个调度函数或调度指令。此外,您的模式可能会使用一些参数变量。中找到调度示例,并用它来调度你的网络。

2023-11-05 11:20:39 22

翻译 深度神经网络——如何启用 Halide 后端以提高效率 OpenCV v4.8.0

本教程介绍如何使用 Halide 语言后端在 OpenCV 深度学习模块中运行模型。Halide 是一个开源项目,可以让我们以可读格式编写图像处理算法,根据特定设备安排计算,并以相当高的效率进行评估。LLVM 编译可能需要很长时间。

2023-11-05 11:13:38 56

翻译 深度神经网络——加载 Caffe 框架模型 OpenCV v4.8.0

我们将网络输出(包含 1000 个 ILSVRC2012 图像类别中每个类别的概率)放到 prob blob 中。在本教程中,你将学习如何使用 opencv_dnn 模块,利用 Caffe 模型动物园中的 GoogLeNet 训练网络进行图像分类。在前向传递过程中,会计算每个网络层的输出,但在本例中,我们只需要最后一层的输出。形状的四维 blob(即所谓的批处理)。将这些文件放到本程序示例的工作目录下。我们将在以下图片上演示此示例的结果。我们将使用示例应用程序中的片段,可从。对于我们的图像,我们得到的。

2023-11-05 11:06:32 249

翻译 OpenCV教程:深度神经网络(DNN 模块) OpenCV v4.8.0

在本节中,您将找到介绍如何使用 OpenCV 运行分类、分割和检测 PyTorch DNN 模型的指南。本节将介绍如何使用 OpenCV 运行分类、分割和检测 TensorFlow DNN 模型。

2023-10-25 18:31:24 110

翻译 二维特征框架——用代码解释同构的基本概念 OpenCV v4.8.0

由于物体是平面的,因此在物体帧中表示的点与在归一化摄像机帧中表示的投影到图像平面中的点之间的变换就是同轴变换。,可以根据三维物体点(在物体帧中表示的点)和投影二维图像点(在图像中查看的物体点)的对应关系计算摄像机姿态。在我们的例子中,棋盘的 Z 轴位于物体内部,而在 homography 图中,Z 轴位于物体外部。请注意,根据同轴度估计摄像机姿态的代码只是一个示例,如果您想估计平面或任意物体的摄像机姿态,请使用。),因为这并不能确保所得到的旋转矩阵是正交的,而刻度大致是通过将第一列归一化为 1 来估算的。

2023-10-25 18:26:21 107

翻译 二维特征框架——AKAZE 和 ORB 平面跟踪 OpenCV v4.8.0

如果最接近的匹配比第二个最接近的匹配更接近 nn_match_ratio,那么它就是匹配的。我们需要保存检测到的关键点数量,以确保两个检测器找到的关键点数量大致相同。在本教程中,检测器的设置是在每帧上找到约 1000 个关键点。本地特征,使用它们来查找视频帧之间的匹配点并跟踪物体运动。如果有合理数量的离群值,我们就可以使用估计变换来定位对象。会计算离群值,因此我们只需保存选定的点和匹配值。要进行跟踪,我们需要视频和第一帧上的物体位置。要找到帧间的匹配点,我们必须先找到关键点。在本教程中,我们将比较。

2023-10-25 17:19:06 101

翻译 二维特征框架——AKAZE 本地特征匹配 OpenCV v4.8.0

我们将在给定同构矩阵的一对图像上找到关键点,将它们匹配起来,并计算离群值(即符合给定同构的匹配值)的数量。中找到图像(graf1.png、graf3.png)和同源图(H1to3p.xml)。如果最近的匹配距离明显小于第二近的匹配距离,则说明匹配是正确的(匹配没有歧义)。我们使用Hamming距离,因为 AKAZE 默认使用二进制描述符。如果第一个关键点到第二个关键点的投影距离小于阈值,则符合同构模型。我们会为离群值创建一组新的匹配值,因为绘制函数需要它。这里我们保存生成的图像,并打印一些统计数据。

2023-10-25 17:09:00 337

翻译 二维特征框架——检测平面物体 OpenCV v4.8.0

测试数据:使用数据文件夹中的图片,例如 box.png 和 box_in_scene.png。模块检测场景中的已知平面物体。本教程的目的是学习如何使用。

2023-10-25 16:54:48 67

翻译 二维特征框架——利用特征 2D + 同源性技术查找已知对象 OpenCV v4.8.0

下面是检测到的对象(绿色高亮)的结果。请注意,由于同源性是通过 RANSAC 方法估算的,因此检测到的错误匹配不会影响同源性计算。才能使用 SURF 特征(替代方法有 ORB、KAZE…本教程代码如下所示。本教程代码如下所示。本教程代码如下所示。在本教程中,你将学习如何。

2023-10-25 16:51:35 61

翻译 二维特征框架——使用 FLANN 进行特征匹配 OpenCV v4.8.0

计算一个关键点的两个最近匹配点之间的距离比,当这个值低于阈值时,它就是一个好的匹配点。事实上,这一比率有助于区分模糊匹配(两个最近邻点之间的距离比接近于 1)和良好匹配。)通常使用欧氏距离(或 L2-norm)进行比较和匹配。由于 SIFT 和 SURF 描述符表示邻域中的定向梯度直方图(对于 SURF 来说是 Haar 小波响应的直方图),因此欧氏距离的替代方法是基于直方图的度量(用平方根(海林格)内核代替标准欧几里得距离来衡量 SIFT 描述符之间的相似性,可显著提高管道各阶段的性能。

2023-10-25 16:43:07 404

翻译 二维特征框架——特征描述 OpenCV v4.8.0

才能使用 SURF 特征(可选 ORB、KAZE…本教程代码如下所示。本教程代码如下所示。本教程代码如下所示。在本教程中,您将学习如何。

2023-10-25 16:31:56 65

翻译 二维特征框架——特征检测 OpenCV v4.8.0

才能使用 SURF 特征(可选ORB、KAZE…本教程代码如下所示。本教程代码如下所示。本教程代码如下所示。在本教程中,您将学习如何。

2023-10-25 16:25:17 118 4

翻译 二维特征框架——在子像素中检测边角位置 OpenCV v4.8.0

本教程代码如下所示。本教程代码如下所示。本教程代码如下所示。在本教程中,您将学习如何。

2023-10-25 16:19:09 32

翻译 二维特征框架——创建自己的角检测器 OpenCV v4.8.0

上一个教程 : Shi-Tomasi 角检测器下一个教程 : 检测子像素中的拐角位置原作者Ana Huamán兼容性OpenCV >= 3.0目标在本教程中,您将学习如何使用 OpenCV 函数 cv::cornerEigenValsAndVecs 查找特征值和特征向量,以确定像素是否是一个角落。使用 OpenCV 函数 cv::cornerMinEigenVal 查找用于拐角检测的最小特征值。使用上述两个函数,实现我们自己版本的 Harris 检测器和 Sh

2023-10-25 16:11:21 50

翻译 二维特征框架——Shi-Tomasi 角检测器 OpenCV v4.8.0

本教程代码如下所示。本教程代码如下所示。本教程代码如下所示。在本教程中,你将学习如何。

2023-10-25 15:57:16 42

翻译 二维特征框架——Harris角检测器 OpenCV v4.8.0

I(x+u,y+v)是移动窗口 (x+u,y+v) 处的强度。w(x,y) 是位置 (x,y) 的窗口。I(x,y) 为 (x,y) 处的强度。大于一定值的窗口被视为 "角 "窗口。本教程代码如下所示。本教程代码如下所示。本教程代码如下所示。检测到的角周围有一个黑色小圆圈。在本教程中,我们将具体研究。在本教程中,您将学习。

2023-10-25 15:51:25 39

翻译 OpenCV教程:二维特征框架(feature2d 模块) OpenCV v4.8.0

Harris角检测器Shi-Tomasi 角检测器创建自己的拐角检测器检测子像素中的拐角位置特征检测特征描述使用 FLANN 进行特征匹配特征 2D + 同色异谱法查找已知对象检测平面物体AKAZE 局部特征匹配AKAZE 和 ORB 平面跟踪用代码解释同构的基本概念

2023-10-25 14:23:09 62

翻译 相机标定与3D重建——交互式相机标定应用程序 OpenCV v4.8.0

将图案置于摄像机前方,并以某种姿势固定图案。当一个图案中所有圆的水平线都是另一个图案中类似线的延续时,将两个图案按顺序放在一个平面上。交互式标定过程的前提是,在每一个新的数据部分之后,用户都可以看到结果和误差估计,还可以删除上一个数据部分,最后,当校准数据集足够大时,开始自动数据选择过程。如果标定似乎成功(置信区间和平均重投影误差较小、帧覆盖质量和图案视图数量足够大),应用程序将显示如下屏幕所示的信息。函数获取摄像机参数。应用程序有两组参数:主参数(通过命令行传递)和预置参数(通过 XML 文件传递)。

2023-10-25 13:51:09 113

翻译 相机标定与3D重建——纹理对象的实时姿态估计 OpenCV v4.8.0

上一个教程 : 使用 OpenCV 标定相机下一个教程 : 交互式相机标定应用程序原作者Edgar Riba兼容性OpenCV >= 3.0如今,增强现实技术已成为计算机视觉和机器人领域的热门研究课题之一。在计算机视觉领域,增强现实最基本的问题是估计物体的相机姿态,以便随后进行三维渲染;在机器人领域,则是获取物体姿态,以便抓住它并进行一些操作。然而,要解决这个问题并非易事,因为图像处理中最常见的问题是,要解决一个对人类来说最基本、最直接的问题,需要应用大量算法或数学运算

2023-10-23 14:33:38 110

翻译 相机标定与3D重建——使用 OpenCV 标定相机 OpenCV v4.8.0

棋盘图案的快照数较多,而圆形图案的快照数较少。但实际上,我们的输入图像中存在大量噪声,因此要想取得好的结果,可能至少需要 10 张不同位置的输入图案快照。因此,我们首先进行标定,如果标定成功,我们会将结果保存到 OpenCV 风格的 XML 或 YAML 文件中,具体取决于您在配置文件中提供的扩展名。我上面提到的方程式的形成旨在找出输入中的主要模式:对于国际象棋棋盘来说,主要模式是方格的角,而对于圆来说,主要模式是圆本身。相似的图像会产生相似的方程,而相似的方程在标定步骤中会形成问题,因此标定会失败。

2023-10-21 18:19:15 225 1

翻译 相机标定与3D重建——用方形棋盘校准相机 OpenCV v4.8.0

现在,让我们编写代码,检测图像中的棋盘并找出它与摄像头的距离。您可以将此方法应用于在图像中检测到的任何具有已知 3D 几何形状的物体。测试数据:使用数据文件夹中的 chess_test*.jpg 图像。测试数据:使用 data/chess 文件夹中的图像。本教程的目的是学习如何根据一组棋盘图像标定相机。

2023-10-21 17:50:15 105

翻译 相机标定与3D重建——创建标定模式 OpenCV v4.8.0

中找到 ChAruco 棋盘图案(7X5 ChAruco 棋盘,正方形尺寸:30 毫米,标记尺寸:15 毫米,aruco 口令: DICT_5X5_100,页面宽度:210 毫米,页面高度:297 毫米)您可以使用 opencv/samples/cpp/aruc_dict_utils.cpp,在 my_dictionary.json 文件中生成字典,标记数为 30,标记大小为 5 位。如果您想在 ChAruco 棋盘上使用自己的字典,请在文件名中写入您的字典。本教程的目的是学习如何创建校准图案。

2023-10-21 17:45:37 51

翻译 OpenCV教程:相机标定与 3D 重建(calib3d 模块) OpenCV v4.8.0

创建标定模式使用方形棋盘标定相机使用 OpenCV 进行相机标定纹理对象的实时姿态估计交互式摄像机标定应用程序

2023-10-21 17:38:53 187

翻译 应用程序实用工具——使用 Creative Senz3D 和其他兼容 Intel RealSense SDK 的深度传感器 OpenCV v4.8.0

通过 VideoCapture 类支持与 Intel® RealSense SDK 兼容的深度传感器。使用熟悉的 VideoCapture 界面可以检索深度图、RGB 图像和其他一些输出格式。:由于 PerC SDK 已被 RealSense SDK 取代,本教程已部分过时。

2023-10-21 17:35:07 60

翻译 应用程序实用工具——使用 Orbbec Astra 3D 摄像机 OpenCV v4.8.0

在上面的代码片段中,执行被阻塞,直到两个帧列表中都有一些帧。当出现新的帧时,将检查它们的时间戳–如果它们的时间戳相差超过帧周期的一半,那么其中一个帧将被丢弃。在上面的示例中,我们使用。请注意,上面的示例假定 Astra 摄像机是系统中的第一台摄像机。OpenCV 的 VideoCapture 提供同步API,因此必须在新线程中抓取帧,以避免在读取另一个流时阻塞一个流。在下面的示例图像中,您可以看到代表同一场景的颜色帧和深度帧。从彩色帧中很难分辨出植物的叶子和画在墙上的叶子,而深度数据则让分辨变得容易。

2023-10-21 17:31:13 100

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除