9.java openCV4.x 入门-特殊的Mat类汇总(一)

news2024/11/28 2:45:18
专栏简介

💒个人主页
📰专栏目录

点击上方查看更多内容
📖心灵鸡汤📖

我们唯一拥有的就是今天,唯一能把握的也是今天


建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫
🧭文章导航🧭
⬆️ 8.Mat之多维元组(Tuple)
⬇️ 10.特殊的Mat类汇总(二)

特殊的Mat类汇总

  • 特殊的Mat类汇总
  • 一、MatOfByte
    • 1.构造函数
    • 2.方法介绍
      • 1.alloc​
      • 2.fromArray​​
      • 3.fromList​
      • 4.toArray
      • 5.toList
  • 二、MatOfDouble
    • 1.构造函数
    • 2.方法介绍
  • 三、MatOfFloat
    • 1.构造函数
    • 2.方法介绍
  • 四、MatOfFloat4
    • 1.构造函数
    • 2.方法介绍
  • 五、MatOfFloat6
    • 1.构造函数
    • 2.方法介绍
  • 六、MatOfInt
    • 1.构造函数
    • 2.方法介绍
  • 七、MatOfInt4
    • 1.构造函数
    • 2.方法介绍

     📢 提前对特殊的Mat类(嵌套类)进行说明,后面遇到的时候就不再单独去说了。

特殊的Mat类汇总

   本节中列举的所有类的作用都可以用于读取和写入图像的不同类型的数据。

一、MatOfByte

   一个特殊的Mat类,用于存储图像的字节(byte)数据

1.构造函数

在这里插入图片描述

  1. 创建一个MatOfByte对象,并初始化其数据。
MatOfByte​(int offset, int length, byte... a)
参数:
offset 表示从数组a的哪个位置开始拷贝数据
length拷贝的数据长度
a 要拷贝的字节数组
   通过这个构造函数,可以将一个字节数组的一部分数据拷贝到MatOfByte对象中,用于表示图像或矩阵的字节数据。
        byte data[]={1,2,3,4,5,6};
        //从data数组的第3个位置开始拷贝,拷贝3个
        MatOfByte matOfByte= new MatOfByte(2,3,data);
        System.out.println("matOfByte.dump() :\n" + matOfByte.dump());

2.将给定的Mat对象转换为MatOfByte对象

MatOfByte​(Mat m)
参数:
m mat对象
  根据源码mat对象数据类型须是CV_8UC1,且为1行多列或1列多行的数据格式,(不过经过验证其它单通道类型的数据也是可以的)。
源码:
    public MatOfByte(Mat m) {
        super(m, Range.all());
        if( !empty() && checkVector(_channels, _depth) < 0 )
            throw new IllegalArgumentException("Incompatible Mat");
        //FIXME: do we need release() here?
    }

示例:

        Mat mat = new Mat(1,3, CvType.CV_8UC1);
        mat.put(0,0,1,2,3);
        //将mat转换为MatOfByte对象
        MatOfByte matOfByte= new MatOfByte(mat);
        System.out.println("matOfByte.dump() :\n" + matOfByte.dump());

2.方法介绍

1.alloc​

   这个方法的作用是为MatOfByte对象分配足够的内存空间来存储指定数量的元素。这个方法可以用于在创建MatOfByte对象之后,为其分配所需的内存空间。
   例如,如果你知道你将要存储100个字节数据,你可以调用alloc(100)来为MatOfByte对象分配足够的内存空间,以便能够存储这100个字节。这样,你就可以在MatOfByte对象中存储字节数据了

2.fromArray​​

   将给定的字节数组转化为MatOfByte对象
1.

fromArray​(byte... a)
参数:
a 字节数据
2.
fromArray​(int offset, int length, byte... a)
参数:
offset 表示从数组a的哪个位置开始拷贝数据
length拷贝的数据长度
a 要拷贝的字节数组

3.fromList​

   用于将 List 类型的数据转换为 MatOfByte 对象。

        //创建一个空的matOfByte
        MatOfByte matOfByte= new MatOfByte();
        //创建bl集合
        List bl =new ArrayList<>();
        bl.add((byte) 1);
        bl.add((byte) 2);
        bl.add((byte) 3);
        matOfByte.fromList(bl);
        System.out.println("matOfByte.dump() :\n " + matOfByte.dump());

4.toArray

   将MatOfByte对象转换为byte数组

5.toList

   将MatOfByte对象转换为byte集合

二、MatOfDouble

   通过使用MatOfDouble类,可以方便地进行双精度浮点数类型的矩阵数据的处理和操作

1.构造函数

   这里只列举其中一个构造函数。

MatOfDouble​(Mat m)
参数:
m mat对象-mat数据类型需为CV_64FC1,且需要1行或1列
        Mat mat = new Mat(1,3, CvType.CV_64FC1);
        mat.put(0,0,1,2,3);
        System.out.println("mat.dump() :\n " + mat.dump());
        MatOfDouble matOfDouble = new MatOfDouble(mat);
        System.out.println("matOfDouble.dump() :\n " + matOfDouble.dump());

2.方法介绍

   参考MatOfByte-方法介绍

三、MatOfFloat

   MatOfFloat类的主要作用是提供了一种方便的方式来表示和操作浮点数类型的矩阵数据

1.构造函数

   这里只列举其中一个构造函数。

MatOfFloat​(Mat m)
参数:
m mat对象-mat数据类型需为 CV_32FC1,且需要1行或1列
   Mat mat=new Mat(1,3, CvType.CV_32FC1);
        mat.put(0,0,1,2,3);
        MatOfFloat matOfFloat=new MatOfFloat(mat);
        System.out.println("matOfFloat.dump() :\n " + matOfFloat.dump());

2.方法介绍

   参考MatOfByte-方法介绍

四、MatOfFloat4

   MatOfFloat4类可以用来存储4个浮点数的矩阵

1.构造函数

   这里只列举其中一个构造函数。

MatOfFloat4​(Mat m)
参数:
m mat对象-mat数据类型需为 CV_32FC4,且需要1行或1列
  Mat mat=new Mat(1,3, CvType.CV_32FC4);
        MatOfFloat4 matOfFloat=new MatOfFloat4(mat);
        System.out.println("matOfFloat4.dump() :\n " + matOfFloat.dump());

2.方法介绍

   参考MatOfByte-方法介绍

五、MatOfFloat6

   MatOfFloat6类可以用来存储6个浮点数的矩阵

1.构造函数

   这里只列举其中一个构造函数。

MatOfFloat6​(Mat m)
参数:
m mat对象-mat数据类型需为 CV_32FC(6),且需要1行或1列
       Mat mat=new Mat(3,1, CvType.CV_32FC(6));
        MatOfFloat6 matOfFloat=new MatOfFloat6(mat);
        System.out.println("matOfFloat6.dump() :\n " + matOfFloat.dump());

2.方法介绍

   参考MatOfByte-方法介绍

六、MatOfInt

   MatOfInt类是用来表示一个整数类型的矩阵

1.构造函数

   这里只列举其中一个构造函数。

MatOfInt​(Mat m)
参数:
m mat对象-mat数据类型需为 CV_32SC1,且需要1行或1列
        Mat mat=new Mat(1,3, CvType.CV_32SC1);
        MatOfInt matOfInt=new MatOfInt(mat);
        System.out.println("matOfInt.dump() :\n " + matOfInt.dump());

2.方法介绍

   参考MatOfByte-方法介绍

七、MatOfInt4

   MatOfInt4用来存储和操作四个整数类型的矩阵

1.构造函数

   这里只列举其中一个构造函数。

MatOfInt4​(Mat m)
参数:
m mat对象-mat数据类型需为 CV_32SC4,且需要1行或1列
            Mat mat=new Mat(3,1, CvType.CV_32SC4);
            MatOfInt4 matOfInt=new MatOfInt4(mat);
            System.out.println("matOfInt4.dump() :\n " + matOfInt.dump());

2.方法介绍

   参考MatOfByte-方法介绍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1577085.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

dubbo知识点

为什么要用 Dubbo&#xff1f; 随着服务化的进一步发展&#xff0c;服务越来越多&#xff0c;服务之间的调用和依赖关系也越来越复杂&#xff0c;诞生了面向服务的架构体系(SOA)&#xff0c;也因此衍生出了一系列相应的技术&#xff0c;如对服务提供、服务调用、连接处理、通信…

嵌入式Linux驱动开发——汇编点灯

嵌入式Linux驱动开发——汇编点灯 本文章开始记录学习嵌入式Linux的过程&#xff0c;使用的开发板是正点原子的阿尔法&#xff0c;以及左老师的书籍和视频。然后这个系列不会介绍基础知识&#xff08;书上都有&#xff09;&#xff0c;主要是记录思考过程以及需要注意的点。 代…

《深入浅出多模态》:多模态经典模型CLIP

🎉AI学习星球推荐: GoAI的学习社区 知识星球是一个致力于提供《机器学习 | 深度学习 | CV | NLP | 大模型 | 多模态 | AIGC 》各个最新AI方向综述、论文等成体系的学习资料,配有全面而有深度的专栏内容,包括不限于 前沿论文解读、资料共享、行业最新动态以、实践教程、求职…

淘宝天猫详情接口API:打造个性化购物体验

在数字时代的购物领域&#xff0c;个性化体验成为了各大电商平台竞争的核心。随着互联网和大数据技术的快速发展&#xff0c;淘宝天猫作为中国最大的电商平台&#xff0c;不断推出创新的功能和工具&#xff0c;联讯数据为用户提供个性化购物服务。其中&#xff0c;淘宝天猫详情…

The Closest Pair Problem

Problem Let S be a set of n points ((xi,yi), 1≤i≤n) in the plane, finding a pair of points p and q in S whose mutual distance is minimum. Algorithm 1: Θ ( n 2 ) The brute-force algorithm simply examines all the possible n(n−1)/2 distances and returns t…

实战中内网穿透的打法

前言 在内网渗透时&#xff0c;一个WebShell或CobaltStrike、Metasploit上线等&#xff0c;只是开端&#xff0c;更多是要内网横向移动&#xff0c;扩大战果&#xff0c;打到核心区域。但后渗透的前提是需要搭建一条通向内网的“专属通道”&#xff0c;才能进一步攻击。可实战…

交易要想成功澳福总结几点

100%使用基本面分析的投资者能保证每次交易都能成功吗&#xff1f;100%使用技术分析的投资者能保证每次交易都能成功吗&#xff1f;在fpmarkets澳福看来无论是基本面分析还是技术分析都不能保证100%交易成功。 投资者不能只依赖一种分析进行投资交易。在fpmarkets澳福看来成功的…

4【PS让图片动起来】系列2-【素材拆分 抠图】

【问题介绍】上章展示了如何将花瓣网的素材导入PS&#xff0c;但导入的是一堆花瓣&#xff0c;怎么拆分成一片片飘落的花瓣呢&#xff1f; 今天介绍的主体就是PS抠图 PS抠图的方法有很多种&#xff0c;一口气讲完也不实用&#xff0c;计划是根据合适的案例&#xff0c;介绍合…

uniapp开发笔记----配置钉钉小程序

uniapp开发笔记----配置钉钉小程序 1. 项目根目录添加package.json文件2. 之后点击运行就可以看到已经添加了钉钉小程序3. 如果首次使用需要配置 其他功能待开发。。。 接上一章之后&#xff0c;我想要把项目配置成钉钉小程序 官方文档点击这里 1. 项目根目录添加package.json…

linux:du和df区别

文章目录 1. 概述2. du 命令2. df 命令3. 区别总结 1. 概述 du 和 df 都是 Linux 系统中用于查看磁盘空间使用情况的命令&#xff0c;但它们的功能和用法有所不同。 2. du 命令 du 是 “disk usage” 的缩写&#xff0c;用于显示文件或目录的磁盘使用情况。du 命令用于查看指…

接口自动化入门: Http请求的域名与IP地址概念!

在进行接口自动化测试时&#xff0c;经常需要与服务器进行通信&#xff0c;这就涉及到了使用Http协议发送请求。在发送请求时&#xff0c;我们需要指定目标服务器的域名或者IP地址。下面将从0到1详细介绍域名与IP地址的概念及其在接口自动化测试中的应用。 本文从5个方面来书写…

【nnUNetv2实践】二、nnUNetv2快速入门-训练验证推理集成一条龙教程

nnUNet是一个自适应的深度学习框架&#xff0c;专为医学图像分割任务设计。以下是关于nnUNet的详细解释和特点&#xff1a; 自适应框架&#xff1a;nnUNet能够根据具体的医学图像分割任务自动调整模型结构、训练参数等&#xff0c;从而避免了繁琐的手工调参过程。 自动化流程&a…

申请免费SSL证书

SSL证书是数字证书的一种&#xff0c;配置在服务器上&#xff0c;起到文件信息传输加密的作用。由受信任的数字证书颁发机构CA在验证服务器身份后颁发&#xff0c;防止第三方窃取或篡改信息。 具体来说&#xff0c;SSL证书在客户端浏览器与Web服务器两端建立一条SSL安全通道&a…

【C++】流程控制语句:跳转语句之Break

在C编程语言中&#xff0c;流程控制不仅包括循环和条件分支&#xff0c;还包括一类特别重要的语句——跳转语句。 这类语句允许程序在执行过程中“打破”常规流程&#xff0c;转而执行其他位置的代码。 C提供了四种跳转语句&#xff1a;break、continue、goto 以及 return。…

(已解决)使用IEEE格式的latex模板时出现引用(citation/reference)下面有下划线的情况

文章目录 背景原因解决方案 背景 问题如下&#xff0c;1.有一个下划线标注所发表的期刊或者会议2.不是斜体的。 上面这样肯定是不对的&#xff0c;那为什么会出现这种情况呢&#xff1f; 原因 I think I know of no style that applies underlining to titles in the bibli…

实现第一个动态链接库 游戏插件 成功在主程序中运行 dll 中定义的类

devc 5.11编译环境 dll编译环境设置参考 Dev c C语言实现第一个 dll 动态链接库 创建与调用-CSDN博客 插件 DLL代码和主程序代码如下 注意 dll 代码中的class 类名需要 和主程序 相同 其中使用了函数指针和强制类型转换 函数指针教程参考 以动态库链接库 .dll 探索结构体…

基于51单片机的温度、烟雾、火焰检测设计

基于51单片机的火灾检测设计 &#xff08;仿真&#xff0b;程序&#xff0b;原理图设计报告&#xff09; 功能介绍 具体功能&#xff1a; 1.使用MQ-2烟雾采集&#xff0c;使用ADC0832将传感器输出的模拟信号转化为数字信号&#xff0c;再传给单片机。 2.使用DS18B20采集温度。…

fastlio2 保存每帧的点云和每帧的里程计为单独的文件做后端回环优化和手动回环优化

为了 提供数据做后端回环优化和手动回环优化,需要保存每帧的点云和每帧的里程计为单独的文件,并且需要保存的名字为ros时间戳。 效果很好,比我自己写的手动回环模块好用 // This is an advanced implementation of the algorithm described in the // following paper: /…

Ceph学习 -4.Ceph组件介绍

文章目录 1.Ceph组件介绍1.1 组件介绍1.2 流程解读1.2.1 综合效果图1.2.2 数据存储逻辑 1.3 小结 1.Ceph组件介绍 学习目标&#xff1a;这一节&#xff0c;我们从组件介绍、流程解读、小结三个方面来学习。 1.1 组件介绍 无论是想向云平台提供 Ceph 对象存储和 Ceph 块设备服务…

Mamba入局遥感图像分割 | Samba: 首个基于SSM的遥感高分图像语义分割框架

文章目录 1、导读 2、背景 3、动机 4、方法 5、实验 6、总结 标题&#xff1a;《Samba: Semantic Segmentation of Remotely Sensed Images with State Space Model》论文&#xff1a;https://arxiv.org/abs/2404.01705源码&#xff1a;https://github.com/zhuqinfeng1999…