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

释放双眼,带上耳机,听听看~!
本文主要介绍了LabVIEW AI视觉工具包OpenCV Mat的基本用法和属性,包括创建Mat对象、释放Mat对象以及不同数据类型Mat对象的属性。

‍‍🏡博客主页: virobotics(仪酷智能):LabVIEW深度学习、人工智能博主

🍻本文由virobotics(仪酷智能)原创首发

🥳欢迎大家关注✌点赞👍收藏⭐留言📝

前言

Hello,大家好,我是virobotics(仪酷智能),一个深耕于LabVIEW和人工智能领域的开发工程师。

在 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对象

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

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 彩色图像,代码如下:

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

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

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

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

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

LabVIEW AI视觉工具包OpenCV Mat的基本用法和属性” loading=”lazy”>

1、Mat对象基本属性

  • channels:通道数。

  • cols:矩阵的列数。

  • rows:矩阵的行数。

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

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

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

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

例如:
如果 Mat 对象表示一个 3×3 的灰度图像,其数据类型为 8UC1(即 8 位无符号单通道图像),则 elemSize1为 1,channels 为 1,因此 elemSize 为 1。
如果 cv::Mat 对象表示一个 3×3 的 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进制表示

总结

以上就是今天要给大家分享的内容,希望对大家有用。如有笔误,还请各位及时指正。后续还会继续给各位朋友分享其他案例,欢迎大家关注博主。我是virobotics(仪酷智能),我们下篇文章见~

如果有问题可以在评论区里讨论,提问前请先点赞支持一下博主哦,如您想要探讨更多关于LabVIEW与人工智能技术,欢迎加入我们的技术交流群:705637299。进群请备注:LabVIEW机器视觉

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

本网站的内容主要来自互联网上的各种资源,仅供参考和信息分享之用,不代表本网站拥有相关版权或知识产权。如您认为内容侵犯您的权益,请联系我们,我们将尽快采取行动,包括删除或更正。
AI教程

标题,

2023-11-29 15:40:14

AI教程

RAG技术:结合检索和生成模型的文本生成方案

2023-11-29 15:46:14

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索