文章目录
- 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
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 中的方法
方法 | 描述 |
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) |