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

专栏简介

💒个人主页
📰专栏目录

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

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


建议把本文当作笔记来看,据说专栏目录里面有相应视频🤫
🧭文章导航🧭
⬆️ 7.Mat之转换、重塑与计算
⬇️ 9.特殊的Mat类汇总(一)


   本节内容了解即可!!!
   在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]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不要喷香水

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值