8.java openCV4.x 入门-Mat之多维元组(Tuple)

专栏简介

💒个人主页
📰专栏目录

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

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


建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫
🧭文章导航🧭
⬆️ 7.Mat之转换、重塑与计算
⬇️ 9.待更新

Mat之多维元组(Tuple)

  • 一、 Mat.Atable<T>
    • 1.Mat.Atable介绍
    • 2.方法介绍
  • 二、Mat.Tuple
    • 1.Mat.Tuple4<T> 介绍
      • 1.构造函数
      • 2.方法介绍
  • 三、元素操作
    • 1.<T> Mat.Atable<T> at​(java.lang.Class<T> clazz, int[ ] idx)

   本节内容了解即可!!!
   在Mat类中,我们看到有这样两个方法。返回的对象是 <T> Mat.Atable<T>

在这里插入图片描述
  这两个方法可以用来获取指定位置的像素值。同时可以指定要获取的元素值的类型(指定的类型需要和矩阵的数据类型对应才行)。并且可以通过返回的对象对该位置的像素值进行精细处理。

一、 Mat.Atable

1.Mat.Atable介绍

   在此之前我们先了解下<T> Mat.Atable<T>
在这里插入图片描述

我们可以看出,它是位于Mat类中的一个接口,这个接口允许你以各种组合形式获取和设置矩阵元素。然而,请注意,虽然这个接口定义了这些方法,但具体如何实现这些方法取决于具体实现这个接口的类。如下所示
在这里插入图片描述

2.方法介绍

  相关方法作用如下图所示:
在这里插入图片描述

二、Mat.Tuple

  它是一个嵌套类。有Tuple2、Tuple3、Tuple4 这三个类,分别用来表示一个具有两个元素、三个元素、四个元素的元组。它用于表示图像中的像素值。

1.Mat.Tuple4 介绍

  我们以Mat.Tuple4<T>为例进行说明。
  作用:
  存储像素值:在图像处理中,Mat.Tuple4可以用来存储每个像素点的像素值,包括多个通道的值。
  访问像素值:可以通过Mat.Tuple4的方法获取和修改元组中每个通道的值,进行像素级的操作和处理。
  处理多通道图像:对于多通道的图像,Mat.Tuple4提供了方便的数据结构,可以方便地处理和操作多通道图像数据。

1.构造函数

在这里插入图片描述
  通过构造函数,可以看出,接受两个参数,分别代表元组中的四个元素。_0, _1,_2,_3 可以用来分别表示图像中的红、绿、蓝、透明度这四个通道。

2.方法介绍

  直接上图了,比较容易理解
在这里插入图片描述

三、元素操作

  了解之后我们演示下使用示例。

1. Mat.Atable at​(java.lang.Class clazz, int[ ] idx)

Mat.Atable at​(java.lang.Class clazz, int[] idx)
参数:
clazz 指定获取值的类型,可以是Byte.class、Short.class、Integer.class、Float.class或Double.class
idx 指定像素的位置,以数组形式表示
public class MatExample {
    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat mat = new Mat(1,2,CvType.CV_32FC4);
        mat.put(0,0,1,2,3,4,5,6,7,8);
        System.out.println("mat.dump() = \n" + mat.dump());
        Mat.Atable<Float> at = mat.at(Float.class, 0, 0);
        //获取像素值
        Mat.Tuple4<Float> v4c = at.getV4c();
        System.out.println("B通道值 = " + v4c.get_0());
        System.out.println("G通道值 = " + v4c.get_1());
        System.out.println("R通道值 = " + v4c.get_2());
        System.out.println("透明度  = " + v4c.get_3());
        //设置值
        Mat.Tuple4<Float> tuple4 = new Mat.Tuple4<>(11f,22f,33f,44f);
        at.setV4c(tuple4);
        System.out.println("mat.dump() = \n" + mat.dump());

    }
}

结果:

mat.dump() =
[1, 2, 3, 4, 5, 6, 7, 8]
B通道值 = 1.0
G通道值 = 2.0
R通道值 = 3.0
透明度 = 4.0
mat.dump() =
[11, 22, 33, 44, 5, 6, 7, 8]

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【原创教程】EPLAN中伺服的制图方法

首先在EPLAN里制作伺服之前,需要有伺服的手册,根据手册里的各个引脚号的说明来制图,这里我们讲解西门子和三菱这两种品牌型号的。 1、下图是西门子的伺服,型号为:6SL3040-1LA01-0AA0 2、第一步我们需要绘制出黑盒来表示伺服的整体外框 选择插入—盒子—黑盒 3、在图纸…

ansible-自动化工具

一、ansible概述 不是C/S架构&#xff0c;就是一种工具 1&#xff1a;linux自动化运维 编写程序实现运维自动化&#xff1a;shell python 工具模式自动化&#xff1a; ①OS Provisioning&#xff1a; RedHat satellite&#xff1b;PXE&#xff08;可实现dhcp和tftp&#…

cache/TLB里分别都有什么?

快速链接: 【精选】ARMv8/ARMv9架构入门到精通-[目录] &#x1f448;&#x1f448;&#x1f448; cache cache里都有什么&#xff1f; 或者问cache line&#xff08;即每个entry&#xff09;里都有什么&#xff1f; 答案是 : TAG DATA invalid bit dirty bit 那么TAG里又都…

归并排序和分治

归并排序 归并排序是利用归并的思想实现的排序方法&#xff0c;该算法采用经典的分治策略&#xff08;分治法将问题分成一些小的问题然后递归求解&#xff0c;而治的阶段则将分的阶段得到的各答案"修补"在一起&#xff0c;即分而治之)。 分而治之 可以看到这种结构…

LeetCode-142. 环形链表 II【哈希表 链表 双指针】

LeetCode-142. 环形链表 II【哈希表 链表 双指针】 题目描述&#xff1a;解题思路一&#xff1a;快慢指针 判断是否有环见解题思路二&#xff1a;set()解题思路三&#xff1a;0 题目描述&#xff1a; 给定一个链表的头节点 head &#xff0c;返回链表开始入环的第一个节点。 如…

The Sandbox 与 Otherworld 合作推出元宇宙网络漫画中心

​ The Sandbox 将与韩国初创公司 Otherworld 合作&#xff0c;建立一个元宇宙网络动漫中心&#xff0c;为用户提供基于 KakaoPage 热门 IP 的各种体验。 Solo Leveling 是此次合作的第一个 IP。这部网络动画将深入主人公Sung Jinwoo的生活&#xff0c;并与 NFT 进行整合。随后…

面试算法-122-翻转二叉树

题目 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1] 解 class Solution {public TreeNode invertTree(TreeNode root) {return dfs(…

SpringBoot项目启动成功,但是调用接口直接报NOT FOUND 404

问题描述 SpringBoot项目启动成功&#xff0c;但是调用接口直接报NOT FOUND 404 解决办法 启动类中ComponentScan(basePackages {“com.afclab”})中的扫包路径和项目路径不一样&#xff0c;导致扫不到Controller等组件&#xff0c;修改成和项目路径一样就可以解决&#xf…

科技团队治理能力成长路线图

点击&#x1f446;蓝字 关注我们 本文观点&#xff5c;吴穹 主笔&#xff5c;AI小助手 温馨提示&#xff1a;干货长文&#xff0c;建议收藏阅读喔&#xff5e; 引言 2024年3月20日&#xff0c;吴穹博士于上海交通大学上海高级金融学院同一众信托行业金融科技管理者进行了《金融…

Postman和Python Request测试多行Form-data

1、请求参数有多个&#xff0c;F12查看请求体如下&#xff1a; 查看源代码&#xff1a; ------WebKitFormBoundaryHknGXm9VkhRUXZYC Content-Disposition: form-data; name"custId"IICON004 ------WebKitFormBoundaryHknGXm9VkhRUXZYC Content-Disposition: form-da…

尚硅谷2024最新Git企业实战教程 | Git与GitLab的企业实战

这篇博客是尚硅谷2024最新Git企业实战教程&#xff0c;全方位学习git与gitlab的完整笔记。 这不仅仅是一套Git的入门教程&#xff0c;更是全方位的极狐GitLab企业任务流开发实战&#xff01;作为一应俱全的一站式DevOps平台&#xff0c;极狐GitLab的高阶功能全面覆盖&#xff0…

LangSmith

文章目录 关于 LangSmith创建 API Key 基本代码使用查看控制台 关于 LangSmith 主页&#xff1a;https://www.langchain.com/langsmith文档&#xff1a;https://docs.smith.langchain.com/LangSmith Walkthrough &#xff1a; https://python.langchain.com/docs/langsmith/wa…

Java就近原则和this关键字

Java 中的就近原则和 this 关键字有着密切的关系&#xff0c;特别是在处理成员变量与方法参数同名的情况下。就近原则指的是在同一作用域下&#xff0c;优先使用最近声明的变量或参数。 在 Java 中&#xff0c;如果一个方法的参数与类的成员变量同名&#xff0c;为了明确指示要…

上网行为管理系统推荐,上网行为审计软件推荐

上网行为管理是指帮助互联网用户控制和管理对互联网的使用。它涵盖了多个方面&#xff0c;包括网页访问过滤、上网隐私保护、网络应用控制、带宽流量管理、信息收发审计、用户行为分析等。 上网行为管理产品系列适用于需要实施内容审计与行为监控、行为管理的网络环境&#xf…

Day29代码随想录(1刷) 回溯

51. N 皇后 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击。 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解决方案…

数据恢复工具可以恢复所有丢失的文件吗

随着数字时代的快速发展&#xff0c;数据已经成为我们生活与工作中不可或缺的一部分。然而&#xff0c;数据丢失的风险也随之增大。无论是由于误删除、误格式化、病毒感染还是其他意外情况&#xff0c;数据丢失都可能带来不小的损失。在这种情况下&#xff0c;数据恢复工具应运…

【SQL】1873. 计算特殊奖金(CASE WHEN;IF())

题目描述 leetcode题目&#xff1a;1873. 计算特殊奖金 Code 写法一&#xff1a; CASE WHEN select employee_id, (case when employee_id % 2 0 or name like M% then salary 0 else salary end) as bonus from Employees order by employee_id写法二 &#xff1a;IF() …

使用deepspeed小记

1. 减少显存占用的历程忠告 医学图像经常很大&#xff0c;所以训练模型有时候会有难度&#xff0c;但是现在找到了很多减少显存的方法。 不知道为什么&#xff0c;使用transformers的trainer库确确实实会减少显存的占用&#xff0c;即使没有使用deepspeed&#xff0c;占用的显…

【QT学习】4.浮动窗口

结果&#xff1a; 代码&#xff1a; //制作核心控件&#xff1a;文本编辑框QTextEdit* pTextEditnew QTextEdit;//制作浮动控件connect(pMenu1,&QMenu::triggered,[](QAction* pAction){qDebug()<<pAction->text()<<endl;if(pAction->text()"浮动…

若依框架时间比较的坑(DATE_FORMAT)

背景 - 想做生日的比较 若依自带的比较 <if test"params.beginTime ! null and params.beginTime ! "><!-- 开始时间检索 -->AND date_format(u.create_time,%y%m%d) > date_format(#{params.beginTime},%y%m%d)</if><if test"params…