0
点赞
收藏
分享

微信扫一扫

入门级Mat (java版)

java
Mat可以保存图片。图片RGB-是三通道,所以Mat也包含了通道数。
列举最常见的一些方法

文章目录

创建

 Mat mat = new Mat(3,2, CvType.CV_32SC3);

第一二个参数是行列数,第三个参数是mat的类型。这里32SC3表示一个像素用了32位,S代表signed int,C3代表通道数是3。
即 创建一个3X2的矩阵,此矩阵具有3通道。每个点能保存int类型数据
未带通道数的默认是1。例如,CV_8U就等同于CV_8UC1,CV_32S就等同于CV_32SC1。

更常用的是Mat mat = Imgcodecs.imread();

理解如何保存

 Mat mat = new Mat(3,2, CvType.CV_32SC3);
 System.out.println(mat.dump());//数据矩阵的所有元素

输出如下:
在这里插入图片描述
3行2列。2列就是红色矩形框。一行三个元素是因为三个通道。


 Mat mat = new Mat(3,2, CvType.CV_32SC3,new Scalar(1,2,4));
 System.out.println(mat.dump());

下面均已这个例子举例。
在这里插入图片描述


get方法

一般得到一个数组,因为可能是多通道。

		Mat mat = new Mat(3,2, CvType.CV_32SC3,new Scalar(1,2,4));
        System.out.println(mat.dump());
        System.out.println(mat.get(0,1)[0]);//第一行,第二列,通道1的元素:1
        System.out.println(mat.get(0,1)[1]);//第一行,第二列,通道2的元素:2
        System.out.println(mat.get(0,2)[0]);// 数组出界

put方法

放的数组要满足通道数的要求

	System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat mat = new Mat(3,2, CvType.CV_32SC3,new Scalar(1,2,4));
        System.out.println(mat.dump());
        System.out.println(mat.get(0,1)[0]);
        System.out.println(mat.get(0,1)[1]);
        int[] am=new int[]{4,5,6};
        mat.put(1,1,am);
        System.out.println(mat.dump());
         System.out.println(mat.get(1,1)[1]);

在这里插入图片描述

push_back

新添加的Mat和原来的Mat,需要列数,通道数相同。

 mat.push_back(new Mat(4,2,CvType.CV_32SC3,new Scalar(0,0,0)));
 System.out.println(mat.dump());

在这里插入图片描述

reshape

双参,第一个是通道数,第二个是行数。如果为0,新的矩阵和原矩阵的通道/行数相同。
无论怎么变,新矩阵的元素个数不变。

     //reshape
        Mat a=mat.reshape(2,1);
        System.out.println(a.dump());
        System.out.println(a.rows());
        System.out.println(a.cols());
        System.out.println(a.channels());

在这里插入图片描述

import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.Scalar;

public class SvmDEMO {
    public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat mat = new Mat(3,2, CvType.CV_32SC3,new Scalar(1,2,4));
        System.out.println(mat.dump());
        //get
        System.out.println(mat.get(0,1)[0]);
        System.out.println(mat.get(0,1)[1]);

        int[] am=new int[]{4,5,6};
        //put
        mat.put(1,1,am);

        System.out.println(mat.dump());
        System.out.println(mat.get(1,1)[1]);
        //push_back
        mat.push_back(new Mat(4,2,CvType.CV_32SC3,new Scalar(9,9,9)));

        System.out.println(mat.dump());
        //reshape
        Mat a=mat.reshape(2,1);
        System.out.println(a.dump());
        System.out.println(a.rows());
        System.out.println(a.cols());
        System.out.println(a.channels());

    }


}

举报

相关推荐

webpack 入门级操作

Numpy 入门级教学

vue的入门级安装

12-入门级js

GRE数学入门级词汇

Jenkins入门级安装部署

0 条评论