LabVIEW AI视觉工具包OpenCV Mat基本用法和属性

简介: LabVIEW AI视觉工具包OpenCV Mat基本用法和属性

前言

在 OpenCV 中,Mat 是一个非常重要的类,它代表了一个 n 维的稠密数组,其中每个元素都具有相同的数据类型。Mat 可以用来表示图像、矩阵、向量和其他数学对象,它支持多种数据类型,如整型、浮点型、布尔型等。

Mat 是 OpenCV 中的一个重要组件,几乎所有的图像处理和计算机视觉任务都涉及到它。因此,了解 Mat 的基本用法和属性是非常重要的。

本文主要和大家分享LabVIEW AI视觉工具包OpenCV Mat的基本用法和属性。

一、Mat的基本用法

1、创建Mat对象

可以使用Creat_mat.vi来创建一个空的 Mat 对象,也可以创建一个指定大小和数据类型的 Mat 对象。Creat_mat.vi数据类型选择8UC1_size,则可以创建一个灰度图Mat,选择8UC3_size,则可以创建某种颜色的彩图Mat,选择其他数据类型,则会创建一个空的Mat对象
image.png

Creat_mat.vi是一个多态VI,用于创建创建不同数据类型的Mat,即多维数组。

常用的数据类型包括:

  • 8U:8 位无符号整型,取值范围为 0 到 255。
  • 16U:16 位无符号整型,取值范围为 0 到 65535。
  • 16S:16 位有符号整型,取值范围为 -32768 到 32767。
  • 32S:32 位有符号整型,取值范围为 -2147483648 到 2147483647。
  • 32F:32 位浮点型,取值范围为 -3.4028235e+38 到 3.4028235e+38。
  • 64F:64 位浮点型,取值范围为 -1.7976931348623158e+308 到 1.7976931348623158e+308。

除了上述基本数据类型外,还支持复合数据类型,例如:

  • 8UC1_size:8 位无符号整型,1 个通道。
  • 8UC3_size:8 位无符号整型,3 个通道。

8U 表示 8 位无符号整型,C 表示通道数,1、3 分别表示通道数为 1、3。在创建 Mat 对象时,需要指定矩阵的数据类型,可根据实际所需数据类型来创建Mat。

多态VI概念:可以处理多种不同数据类型的VI被称为“多态VI”。多态VI根据输入或输出的 数据类型,再选择调用一个针对这种数据类型实现功能的VI,这些针对某种数据类型实现功能的VI称作“实例VI”。一般一个VI调用多个实例VI,简而言之:一个多态VI就是多个实例VI的封装和组合。

2、释放 Mat 对象

可以使用Release.vi释放Mat 对象占用的内存。

下面是一个示例代码,演示了如何创建和释放 Mat 对象:

  • 创建一个大小为480*640,数据类型为 8UC3 ,颜色为全红的RGB 彩色图像,代码如下:

image.png

  • 创建一个大小为480*640,数据类型为 8UC1 ,灰度为0的灰度图像,代码如下:

image.png

二、不同数据类型Mat对象的属性

Mat的属性可以由属性节点(property node.vi)获取,如数据类型为8U的Mat,有如下属性:
image.png

1、Mat对象基本属性

  • channels:通道数。

  • cols:矩阵的列数。

  • rows:矩阵的行数。

  • data_Pointer:矩阵中第一个元素的指针,可以通过该指针访问整个矩阵的数据。

  • dims:矩阵的维度,通常是 2 或 3。

  • elemSize:表示矩阵中每个元素所占用的字节数。它等于 elemSize1 * channels

  • elemSize1 :表示矩阵中每个元素的字节数(即数据类型大小),而 channels 是矩阵中的通道数。

例如:
如果 Mat 对象表示一个 3x3 的灰度图像,其数据类型为 8UC1(即 8 位无符号单通道图像),则 elemSize1为 1,channels 为 1,因此 elemSize 为 1。
如果 cv::Mat 对象表示一个 3x3 的 RGB彩色图像,其数据类型为 8UC3(即 8 位无符号三通道图像),则 elemSize1 为 8/8=1,channels 为3,因此 elemSize 为 3。
elemSize 在计算 cv::Mat 对象的内存大小时非常有用。矩阵的内存大小可以通过以下公式计算:
size_t size_in_bytes = rows * step; // 每行的字节数乘以行数

  • length:矩阵的大小,是一个一维数组,包含 rowscols

  • step:矩阵在内存中每一行的字节数,通常是一个包含两个或三个元素的整数数组,其中 step[0] 表示每行元素所占用的字节数,step[1]step[2] 分别表示相邻两行在内存中的地址偏移量。

  • total:矩阵中元素的总数,等于 cols * rows

  • type:矩阵的数据类型,表示矩阵中每个元素的数据类型。

2、Mat对象的数据属性

  • 1d_data:是一个一维数组,数组大小为cols * rows * channels,该数组中每一个元素都代表一个像素,对于灰度图像,像素用8位无符号数,0表示黑色,255表示白色。对于彩色像素而言,每个像素需要三位这样的8位无符号数来表示,即三个通道(R,G,B),数组则依次存储一个像素的三个通道的值,然后再存储下一个像素点。
  • 8UC1_data:是一个二维数组,数组行数为rows,列数为cols * channels,该数组中每一个元素都代表一个像素;
  • 8UC3_data:是一个二维数组,数组行数为rows,列数为cols * channels,该数组中每一个元素都代表一个像素;
  • image:LabVIEW自带的图片控件。
  • picture:二维图片,图片控件
  • U32_data:表示一个32位整型数组,数组行数为rows,列数为cols,用于存储图像中每个像素的颜色值。每个像素都由一组颜色值来表示,这些颜色值可以是灰度值、RGB值或其他颜色空间(RGBA)的值。该数组中每一个元素都代表一个像素;像素值由16进制表示

总结

以上就是今天要给大家分享的内容,如果有问题可以在评论区里讨论,如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们:705637299。

**如果文章对你有帮助,欢迎✌关注、👍点赞、✌收藏

目录
相关文章
|
6月前
|
存储 新制造 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C++)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C++)
83 2
|
存储 编译器 数据库
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV核心类型 Mat
[笔记]OpenCV+FFmpeg+Qt实现视频编辑器之OpenCV核心类型 Mat
115 1
|
6月前
|
计算机视觉 Python
OpenCV获取视频文件的属性并动态显示实战(附Python源码)
OpenCV获取视频文件的属性并动态显示实战(附Python源码)
110 0
|
6月前
|
人工智能 Windows
LabVIEW将视觉生成器AI用作OPC服务器
LabVIEW将视觉生成器AI用作OPC服务器
63 2
|
6月前
|
存储 新制造 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C#)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为Mat图像格式(C#)
72 0
|
4月前
|
机器学习/深度学习 XML 计算机视觉
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习库,它提供了大量的函数和工具,用于处理图像和视频数据。
|
5月前
|
存储 算法 API
OpenCV 3.1.0中的Mat对象使用
OpenCV 3.1.0中的Mat对象使用
38 2
|
5月前
|
存储 编解码 API
【图像文本化】Base64编解码OpenCV4中 Mat 对象
【图像文本化】Base64编解码OpenCV4中 Mat 对象
83 0
|
6月前
|
机器学习/深度学习 PyTorch TensorFlow
TensorFlow、PyTorch、Keras、Scikit-learn和ChatGPT。视觉开发软件工具 Halcon、VisionPro、LabView、OpenCV
TensorFlow、PyTorch、Keras、Scikit-learn和ChatGPT。视觉开发软件工具 Halcon、VisionPro、LabView、OpenCV
108 1
|
机器学习/深度学习 人工智能 算法
使用LabVIEW AI视觉工具包快速实现SIFT特征检测(含源码)
使用LabVIEW AI视觉工具包快速实现SIFT特征检测(含源码)
227 0

热门文章

最新文章