文章目录

  • 1. java packages
  • 1.1 org.opencv.core
  • 2 Core 中常用的数据结构
  • 2.1 Point 类:像素的位置
  • 2.2 Scalar 类:像素的颜色
  • 2.3 Size 类:图的尺寸
  • 2.4 Rect 类:矩形区域
  • 2.5 Mat 类
  • 3 Core 中常用的函数
  • 4 Mat 中的方法


1. java packages

java opencv根据角度旋转_opencv

1.1 org.opencv.core

核心功能模块,包括:

  • OpenCV基本数据结构,
  • 动态数据结构,
  • 绘图函数,
  • 数组操作相关函数;
  • 辅助功能

2 Core 中常用的数据结构

2.1 Point 类:像素的位置

Point 类表示二维坐标系下的点,用来描述某个像素点的位置信息,是由图像坐标 x 和 y 指定的 2D 点。

public class Point {
	public double x, y;
    public Point(double x, double y) {
        this.x = x;
        this.y = y;
    }

    public Point() {
        this(0, 0);
    }

    public Point(double[] vals) {
        this();
        set(vals);
    }

    public void set(double[] vals) {
        if (vals != null) {
            x = vals.length > 0 ? vals[0] : 0;
            y = vals.length > 1 ? vals[1] : 0;
        } else {
            x = 0;
            y = 0;
        }
    }

    public Point clone() {
        return new Point(x, y);
    }

    public double dot(Point p) {
        return x * p.x + y * p.y;
    }
}

2.2 Scalar 类:像素的颜色

Scalar 类表示具有4个元素的数组,在 OpenCV 中被用来表示像素的颜色,如 RGB 颜色值。构造函数 Scalar(double v0, double v1, double v2),其中 v0 为红色分量,v1 为绿色分量,v2 为蓝色分量。

public class Scalar {
    public double val[];

    public Scalar(double v0, double v1, double v2, double v3) {
        val = new double[] { v0, v1, v2, v3 };
    }

    public Scalar(double v0, double v1, double v2) {
        val = new double[] { v0, v1, v2, 0 };
    }

    public Scalar(double v0, double v1) {
        val = new double[] { v0, v1, 0, 0 };
    }

    public Scalar(double v0) {
        val = new double[] { v0, 0, 0, 0 };
    }

    public Scalar(double[] vals) {
        if (vals != null && vals.length == 4)
            val = vals.clone();
        else {
            val = new double[4];
            set(vals);
        }
    }

    public void set(double[] vals) {
        if (vals != null) {
            val[0] = vals.length > 0 ? vals[0] : 0;
            val[1] = vals.length > 1 ? vals[1] : 0;
            val[2] = vals.length > 2 ? vals[2] : 0;
            val[3] = vals.length > 3 ? vals[3] : 0;
        } else
            val[0] = val[1] = val[2] = val[3] = 0;
    }

    public static Scalar all(double v) {
        return new Scalar(v, v, v, v);
    }

    public Scalar clone() {
        return new Scalar(val);
    }

    public Scalar mul(Scalar it, double scale) {
        return new Scalar(val[0] * it.val[0] * scale, val[1] * it.val[1] * scale,
                val[2] * it.val[2] * scale, val[3] * it.val[3] * scale);
    }

    public Scalar mul(Scalar it) {
        return mul(it, 1);
    }

    public Scalar conj() {
        return new Scalar(val[0], -val[1], -val[2], -val[3]);
    }

    public boolean isReal() {
        return val[1] == 0 && val[2] == 0 && val[3] == 0;
    }
}

2.3 Size 类:图的尺寸

Size 类用来表示图的大小,构造函数 Size(double width, double height)。

public class Size {
    public double width, height;

    public Size(double width, double height) {
        this.width = width;
        this.height = height;
    }

    public Size() {
        this(0, 0);
    }

    public Size(Point p) {
        width = p.x;
        height = p.y;
    }

    public Size(double[] vals) {
        set(vals);
    }

    public void set(double[] vals) {
        if (vals != null) {
            width = vals.length > 0 ? vals[0] : 0;
            height = vals.length > 1 ? vals[1] : 0;
        } else {
            width = 0;
            height = 0;
        }
    }

    public double area() {
        return width * height;
    }

    public boolean empty() {
        return width <= 0 || height <= 0;
    }

    public Size clone() {
        return new Size(width, height);
    }
}

2.4 Rect 类:矩形区域

Rect 类的成员变量有 x,y,width,height,分别为左上角点(Point)的坐标和矩形的宽和高。

常用的成员函数有:

  • size(): 返回 Size() 对象,表示矩形区域的大小;
  • tl(): 返回左上角的点对应的 Point 对象;
  • br(): 返回右下角的点对应的 Point 对象;
  • area() : 矩形的面积
  • contains(Point p): 判断给定的点,是否在矩形内;
  • inside(Rect rect): 判断给定的矩形是否在本矩形内;

public class Rect {
    public int x, y, width, height;

    public Rect(int x, int y, int width, int height) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
    }

    public Rect() {
        this(0, 0, 0, 0);
    }

    public Rect(Point p1, Point p2) {
        x = (int) (p1.x < p2.x ? p1.x : p2.x);
        y = (int) (p1.y < p2.y ? p1.y : p2.y);
        width = (int) (p1.x > p2.x ? p1.x : p2.x) - x;
        height = (int) (p1.y > p2.y ? p1.y : p2.y) - y;
    }

    public Rect(Point p, Size s) {
        this((int) p.x, (int) p.y, (int) s.width, (int) s.height);
    }
}

2.5 Mat 类

Mat 类是用于保存图像以及其他矩阵数据的数据结构,默认情况下的尺寸是0。

从 OpenCV 踏入 2.0 时代,使用 Mat 类数据结构作为主打之后,OpenCV 开始像 Matlab 一样,上手越发方便,甚至有些函数名都跟 Matlab 一样,比如 imread,imwrite,imshow 等。

使用 Mat 类,开发人员不需要再手动开辟空间,也不必考虑空间的释放。

Mat 类由两个数据部分组成:矩阵头(包含矩阵尺寸、存储方法、存储地址等信息)和一个指向存储所有像素值的矩阵的指针。

构造方法:

public class Mat {

    public final long nativeObj;

    public Mat(long addr) {
        if (addr == 0)
            throw new UnsupportedOperationException("Native object address is NULL");
        nativeObj = addr;
    }

	// 无参构造函数
    public Mat() {
        nativeObj = n_Mat();
    }

	// 行,列,通道类型
    public Mat(int rows, int cols, int type) {
        nativeObj = n_Mat(rows, cols, type);
    }
	
	// data: 指向用户数据的指针。接受数据参数的矩阵构造函数不分配矩阵数据。相反,它们只是初始化指向指定数据的矩阵头,
	// 这意味着不复制任何数据。此操作非常高效,可以使用OpenCV函数处理外部数据。外部数据不会自动解除分配,因此您应该妥善保管。
    public Mat(int rows, int cols, int type, ByteBuffer data) {
        nativeObj = n_Mat(rows, cols, type, data);
    }

    public Mat(int rows, int cols, int type, ByteBuffer data, long step) {
        nativeObj = n_Mat(rows, cols, type, data, step);
    }

    public Mat(Size size, int type) {
        nativeObj = n_Mat(size.width, size.height, type);
    }

    public Mat(int[] sizes, int type) {
        nativeObj = n_Mat(sizes.length, sizes, type);
    }

    public Mat(int rows, int cols, int type, Scalar s) {
        nativeObj = n_Mat(rows, cols, type, s.val[0], s.val[1], s.val[2], s.val[3]);
    }

    public Mat(Size size, int type, Scalar s) {
        nativeObj = n_Mat(size.width, size.height, type, s.val[0], s.val[1], s.val[2], s.val[3]);
    }


    public Mat(int[] sizes, int type, Scalar s) {
        nativeObj = n_Mat(sizes.length, sizes, type, s.val[0], s.val[1], s.val[2], s.val[3]);
    }

    public Mat(Mat m, Range rowRange, Range colRange) {
        nativeObj = n_Mat(m.nativeObj, rowRange.start, rowRange.end, colRange.start, colRange.end);
    }

    public Mat(Mat m, Range rowRange) {
        nativeObj = n_Mat(m.nativeObj, rowRange.start, rowRange.end);
    }

    public Mat(Mat m, Range[] ranges) {
        nativeObj = n_Mat(m.nativeObj, ranges);
    }

    public Mat(Mat m, Rect roi) {
        nativeObj = n_Mat(m.nativeObj, roi.y, roi.y + roi.height, roi.x, roi.x + roi.width);
    }
}

3 Core 中常用的函数

方法

描述

void absdiff(Mat src1, Mat src2, Mat dst)

计算两个图像对应位置像素值差值的绝对值;

void absdiff(Mat src1, Scalar src2, Mat dst)

void add(Mat src1, Mat src2, Mat dst)

计算两个图像的和;

void add(Mat src1, Mat src2, Mat dst, Mat mask)

void add(Mat src1, Mat src2, Mat dst, Mat mask, int dtype)

void add(Mat src1, Scalar src2, Mat dst)

void add(Mat src1, Scalar src2, Mat dst, Mat mask)

void add(Mat src1, Scalar src2, Mat dst, Mat mask, int dtype)

void addWeighted(Mat src1, double alpha, Mat src2, double beta, double gamma, Mat dst)

计算两个图像的加权和;

void addWeighted(Mat src1, double alpha, Mat src2, double beta, double gamma, Mat dst, int dtype)

计算两个图像的加权和;

void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx)

原生的近邻搜寻器;

void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx, int normType)

void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx, int normType, int K)

void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx, int normType, int K, Mat mask)

void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx, int normType, int K, Mat mask, int update)

void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx, int normType, int K, Mat mask, int update, boolean crosscheck)

void bitwise_and(Mat src1, Mat src2, Mat dst)

按位和

void bitwise_and(Mat src1, Mat src2, Mat dst, Mat mask)

void bitwise_not(Mat src, Mat dst)

按位取反

void bitwise_not(Mat src, Mat dst, Mat mask)

void bitwise_or(Mat src1, Mat src2, Mat dst)

按位或

void bitwise_or(Mat src1, Mat src2, Mat dst, Mat mask)

void bitwise_xor(Mat src1, Mat src2, Mat dst)

按位异或

void bitwise_xor(Mat src1, Mat src2, Mat dst, Mat mask)

void compare(Mat src1, Mat src2, Mat dst, int cmpop)

对两个图像的每个对应元素进行比较;

void compare(Mat src1, Scalar src2, Mat dst, int cmpop)

void completeSymm(Mat m)

将方阵的下半部分或上半部分复制到另一半。

void completeSymm(Mat m, boolean lowerToUpper)

void convertFp16(Mat src, Mat dst)

将数组转换为半精度浮点数。

void convertScaleAbs(Mat src, Mat dst)

缩放、计算绝对值,并将结果转换为8位。

void convertScaleAbs(Mat src, Mat dst, double alpha)

void convertScaleAbs(Mat src, Mat dst, double alpha, double beta)

void copyMakeBorder(Mat src, Mat dst, int top, int bottom, int left, int right, int borderType)

在图像周围形成边框。

void copyMakeBorder(Mat src, Mat dst, int top, int bottom, int left, int right, int borderType, Scalar value)

在图像周围形成边框。

void copyTo(Mat src, Mat dst, Mat mask)

复制

float cubeRoot(float val)

计算立方根

void dct(Mat src, Mat dst)

执行正向或反向离散余弦变换。

void dct(Mat src, Mat dst, int flags)

double determinant(Mat mtx)

返回平方浮点矩阵的行列式。

void dft(Mat src, Mat dst)

执行正向或反向离散傅里叶变换

void dft(Mat src, Mat dst, int flags)

void dft(Mat src, Mat dst, int flags, int nonzeroRows)

void divide(double scale, Mat src2, Mat dst)

相除

void divide(double scale, Mat src2, Mat dst, int dtype)

void divide(Mat src1, Mat src2, Mat dst)

void divide(Mat src1, Mat src2, Mat dst, double scale)

void divide(Mat src1, Mat src2, Mat dst, double scale, int dtype)

void divide(Mat src1, Scalar src2, Mat dst)

void divide(Mat src1, Scalar src2, Mat dst, double scale)

void divide(Mat src1, Scalar src2, Mat dst, double scale, int dtype)

boolean eigen(Mat src, Mat eigenvalues)

计算对称矩阵的特征值和特征向量。

boolean eigen(Mat src, Mat eigenvalues, Mat eigenvectors)

void eigenNonSymmetric(Mat src, Mat eigenvalues, Mat eigenvectors)

计算非对称矩阵的特征值和特征向量(仅限实特征值)。

void exp(Mat src, Mat dst)

计算每个数组元素的指数。

void extractChannel(Mat src, Mat dst, int coi)

从src中提取单个通道(coi是基于0的索引)

float fastAtan2(float y, float x)

计算二维向量的角度(以度为单位)。

void findNonZero(Mat src, Mat idx)

void flip(Mat src, Mat dst, int flipCode)

围绕垂直、水平或两个轴翻转二维阵列。

void gemm(Mat src1, Mat src2, double alpha, Mat src3, double beta, Mat dst)

执行广义矩阵乘法。

void gemm(Mat src1, Mat src2, double alpha, Mat src3, double beta, Mat dst, int flags)

int getOptimalDFTSize(int vecsize)

返回给定向量大小的最佳DFT大小。

void hconcat(java.util.List src, Mat dst)

void idct(Mat src, Mat dst)

void idct(Mat src, Mat dst, int flags)

计算一维或二维阵列的离散余弦逆变换

void idft(Mat src, Mat dst)

void idft(Mat src, Mat dst, int flags)

void idft(Mat src, Mat dst, int flags, int nonzeroRows)

void inRange(Mat src, Scalar lowerb, Scalar upperb, Mat dst)

检查数组元素是否位于其他两个数组的元素之间。

void insertChannel(Mat src, Mat dst, int coi)

double invert(Mat src, Mat dst)

查找矩阵的逆或伪逆。

double invert(Mat src, Mat dst, int flags)

double kmeans(Mat data, int K, Mat bestLabels, TermCriteria criteria, int attempts, int flags)

查找簇的中心,并围绕簇对输入样本进行分组。

double kmeans(Mat data, int K, Mat bestLabels, TermCriteria criteria, int attempts, int flags, Mat centers)

void log(Mat src, Mat dst)

计算每个数组元素的自然对数。

void LUT(Mat src, Mat lut, Mat dst)

执行查找表转换。

void magnitude(Mat x, Mat y, Mat magnitude)

计算二维向量的大小。

double Mahalanobis(Mat v1, Mat v2, Mat icovar)

计算两个向量之间的马氏距离。

void max(Mat src1, Mat src2, Mat dst)

求最大值

void max(Mat src1, Scalar src2, Mat dst)

Scalar mean(Mat src)

计算数组元素的平均值。

Scalar mean(Mat src, Mat mask)

void meanStdDev(Mat src, MatOfDouble mean, MatOfDouble stddev)

计算阵列元素的平均值和标准偏差。

void meanStdDev(Mat src, MatOfDouble mean, MatOfDouble stddev, Mat mask)

void merge(java.util.List mv, Mat dst)

图像合并

void min(Mat src1, Mat src2, Mat dst)

void min(Mat src1, Scalar src2, Mat dst)

Core.MinMaxLocResult minMaxLoc(Mat src)

Core.MinMaxLocResult minMaxLoc(Mat src, Mat mask)

void mixChannels(java.util.List src, java.util.List dst, MatOfInt fromTo)

void mulSpectrums(Mat a, Mat b, Mat c, int flags)

void mulSpectrums(Mat a, Mat b, Mat c, int flags, boolean conjB)

对两个傅里叶频谱执行乘法

void multiply(Mat src1, Mat src2, Mat dst)

计算两个阵列的每元素的积。

void multiply(Mat src1, Mat src2, Mat dst, double scale)

void multiply(Mat src1, Mat src2, Mat dst, double scale, int dtype)

void multiply(Mat src1, Scalar src2, Mat dst)

void multiply(Mat src1, Scalar src2, Mat dst, double scale)

void multiply(Mat src1, Scalar src2, Mat dst, double scale, int dtype)

void mulTransposed(Mat src, Mat dst, boolean aTa)

计算矩阵及其转置的乘积。

void mulTransposed(Mat src, Mat dst, boolean aTa, Mat delta)

void mulTransposed(Mat src, Mat dst, boolean aTa, Mat delta, double scale)

void mulTransposed(Mat src, Mat dst, boolean aTa, Mat delta, double scale, int dtype)

double norm(Mat src1)

计算范数

double norm(Mat src1, int normType)

double norm(Mat src1, int normType, Mat mask)

double norm(Mat src1, Mat src2)

double norm(Mat src1, Mat src2, int normType)

double norm(Mat src1, Mat src2, int normType, Mat mask)

void normalize(Mat src, Mat dst)

规范化数组的范数或值范围。

void normalize(Mat src, Mat dst, double alpha)

void normalize(Mat src, Mat dst, double alpha, double beta)

void normalize(Mat src, Mat dst, double alpha, double beta, int norm_type)

void normalize(Mat src, Mat dst, double alpha, double beta, int norm_type, int dtype)

void normalize(Mat src, Mat dst, double alpha, double beta, int norm_type, int dtype, Mat mask)

void perspectiveTransform(Mat src, Mat dst, Mat m)

执行向量的透视矩阵变换。

void phase(Mat x, Mat y, Mat angle)

计算二维向量的旋转角度。

void phase(Mat x, Mat y, Mat angle, boolean angleInDegrees)

void polarToCart(Mat magnitude, Mat angle, Mat x, Mat y)

根据二维向量的幅值和角度计算其x和y坐标。

void polarToCart(Mat magnitude, Mat angle, Mat x, Mat y, boolean angleInDegrees)

void pow(Mat src, double power, Mat dst)

double PSNR(Mat src1, Mat src2)

计算峰值信噪比(PSNR)图像质量度量。

double PSNR(Mat src1, Mat src2, double R)

void randn(Mat dst, double mean, double stddev)

用正态分布的随机数填充数组。

void randShuffle(Mat dst)

随机洗牌数组元素。

void randShuffle(Mat dst, double iterFactor)

void randu(Mat dst, double low, double high)

生成单个均匀分布的随机数或随机数数组。

void reduce(Mat src, Mat dst, int dim, int rtype)

将矩阵化为向量。

void reduce(Mat src, Mat dst, int dim, int rtype, int dtype)

void reduceArgMax(Mat src, Mat dst, int axis)

void reduceArgMax(Mat src, Mat dst, int axis, boolean lastIndex)

void reduceArgMin(Mat src, Mat dst, int axis)

void reduceArgMin(Mat src, Mat dst, int axis, boolean lastIndex)

void repeat(Mat src, int ny, int nx, Mat dst)

用输入数组的重复副本填充输出数组。

void rotate(Mat src, Mat dst, int rotateCode)

以90度的倍数旋转二维阵列。

void scaleAdd(Mat src1, double alpha, Mat src2, Mat dst)

void setErrorVerbosity(boolean verbose)

void setIdentity(Mat mtx)

void setIdentity(Mat mtx, Scalar s)

boolean solve(Mat src1, Mat src2, Mat dst)

解一个或多个线性系统或最小二乘问题。

boolean solve(Mat src1, Mat src2, Mat dst, int flags)

int solveCubic(Mat coeffs, Mat roots)

求一个三次方程的实根。

double solvePoly(Mat coeffs, Mat roots)

求多项式方程的实根或复数根

double solvePoly(Mat coeffs, Mat roots, int maxIters)

void sort(Mat src, Mat dst, int flags)

void sortIdx(Mat src, Mat dst, int flags)

void split(Mat m, java.util.List mv)

图像分割

void sqrt(Mat src, Mat dst)

计算数组元素的平方根。

void subtract(Mat src1, Mat src2, Mat dst)

void subtract(Mat src1, Mat src2, Mat dst, Mat mask)

计算两个数组或数组与标量之间的每元素差。

void subtract(Mat src1, Mat src2, Mat dst, Mat mask, int dtype)

void subtract(Mat src1, Scalar src2, Mat dst)

void subtract(Mat src1, Scalar src2, Mat dst, Mat mask)

void subtract(Mat src1, Scalar src2, Mat dst, Mat mask, int dtype)

Scalar sumElems(Mat src)

计算数组元素的和。

void SVBackSubst(Mat w, Mat u, Mat vt, Mat rhs, Mat dst)

void SVDecomp(Mat src, Mat w, Mat u, Mat vt)

void SVDecomp(Mat src, Mat w, Mat u, Mat vt, int flags)

w

Scalar trace(Mat mtx)

void transform(Mat src, Mat dst, Mat m)

对每个数组元素执行矩阵变换。

void transpose(Mat src, Mat dst)

转置矩阵。

void transposeND(Mat src, MatOfInt order, Mat dst)

对于n维转置矩阵。

4 Mat 中的方法

doc

方法

描述

Mat adjustROI(int dtop, int dbottom, int dleft, int dright)

在父矩阵中调整子矩阵(ROI)的大小和位置。

void assignTo(Mat m)

赋值,浅拷贝,dataAddr 指向同一地址

void assignTo(Mat m, int type)

int channels()

通道数目

int checkVector(int elemChannels)

int checkVector(int elemChannels, int depth)

int checkVector(int elemChannels, int depth, boolean requireContinuous)

Mat clone()

克隆,深拷贝, dataAddr 不同

Mat col(int x)

返回指定列对应的 mat 对象

Mat colRange(int startcol, int endcol)

返回选定的多列数据对应的 mat 对象

Mat colRange(Range r)

int cols()

列数目

void convertTo(Mat m, int rtype)

将数组转换为具有可选缩放比例的另一种数据类型。

void convertTo(Mat m, int rtype, double alpha)

void convertTo(Mat m, int rtype, double alpha, double beta)

void copySize(Mat m)

void copyTo(Mat m)

void copyTo(Mat m, Mat mask)

void create(int[] sizes, int type)

分配新的阵列数据。

void create(int rows, int cols, int type)

void create(Size size, int type)

Mat cross(Mat m)

计算两个三元素向量的叉积。

long dataAddr()

数据的地址

int depth()

矩阵数据的深度

Mat diag()

从矩阵中提取对角线。返回的是一个单列矩阵。

Mat diag(int d)

static Mat diag(Mat d)

int dims()

维度,2d 图片为 2,。

double dot(Mat m)

计算两个向量的点积。

java.lang.String dump()

将矩阵数据输出为字符串形式

long elemSize()

返回以字节为单位的矩阵元素大小。

long elemSize1()

返回每个矩阵元素通道的大小(字节)。

boolean empty()

是否为空

static Mat eye(int rows, int cols, int type)

生成指定大小和类型的单位矩阵

static Mat eye(Size size, int type)

protected void finalize()

double[] get(int[] idx)

获取指定位置的元素

int get(int[] idx, byte[] data)

int get(int[] idx, double[] data)

int get(int[] idx, float[] data)

int get(int[] idx, int[] data)

int get(int[] idx, short[] data)

double[] get(int row, int col)

int get(int row, int col, byte[] data)

int get(int row, int col, double[] data)

int get(int row, int col, float[] data)

int get(int row, int col, int[] data)

int get(int row, int col, short[] data)

long getNativeObjAddr()

获取原生对象的地址

int height()


Mat inv()

逆矩阵。

Mat inv(int method)

通过矩阵表达式进行矩阵求逆。

boolean isContinuous()

是否为连续矩阵?比如通过 Mat.diag() 提取的矩阵就是非连续的。

boolean isSubmatrix()

是否为子矩阵,比如通过 Mat.diag() 提取的矩阵。

void locateROI(Size wholeSize, Point ofs)

返回父矩阵的 size,及子矩阵在父矩阵中的起始点的位置。

Mat matMul(Mat m)

执行两个矩阵的元素乘法或除法。

Mat mul(Mat m)

Mat mul(Mat m, double scale)

static Mat ones(int[] sizes, int type)

值全为 1 的矩阵

static Mat ones(int rows, int cols, int type)

static Mat ones(Size size, int type)

void push_back(Mat m)

将元素添加到矩阵的底部。

int put(int[] idx, byte[] data)

对指定位置的点,赋值

int put(int[] idx, byte[] data, int offset, int length)

int put(int[] idx, double… data)

int put(int[] idx, float[] data)

int put(int[] idx, int[] data)

int put(int[] idx, short[] data)

int put(int row, int col, byte[] data)

int put(int row, int col, byte[] data, int offset, int length)

int put(int row, int col, double… data)

int put(int row, int col, float[] data)

int put(int row, int col, int[] data)

int put(int row, int col, short[] data)

void release()

Mat reshape(int cn)

在不复制数据的情况下更改二维矩阵的形状和/或通道数。比如 2x3,变为 6x1 或 3x2

Mat reshape(int cn, int rows)

Mat reshape(int cn, int[] newshape)

Mat row(int y)

返回特定行对应的矩阵

Mat rowRange(int startrow, int endrow)

返回多行组成的矩阵

Mat rowRange(Range r)

int rows()

矩阵行数

Mat setTo(Mat value)

将所有或部分数组元素设置为指定值。

Mat setTo(Mat value, Mat mask)

Mat setTo(Scalar s)

Mat setTo(Scalar value, Mat mask)

Size size()

尺寸

int size(int i)

long step1()

long step1(int i)

Mat submat(int rowStart, int rowEnd, int colStart, int colEnd)

获取子矩阵

Mat submat(Range[] ranges)

Mat submat(Range rowRange, Range colRange)

Mat submat(Rect roi)

Mat t()

转置矩阵。

java.lang.String toString()

long total()

元素总数

int type()

元素值类型

int width()

static Mat zeros(int[] sizes, int type)

创建全零值矩阵

static Mat zeros(int rows, int cols, int type)

static Mat zeros(Size size, int type)