opencv 中Mat的一些操作

这篇博客详细介绍了在OpenCV Java中如何创建、操作和管理Mat矩阵,包括矩阵的创建、释放、特殊矩阵创建、矩阵乘法、以及元素读取与存储。通过示例代码展示了get()和put()方法的使用,强调了适时调用release()的重要性,并提出了通过数组作为中转来简化元素操作的建议。

https://my.oschina.net/drjones/blog/312876

http://blog.sina.com.cn/s/blog_66e177dd0102w9dv.html



(1)创建矩阵

OpenCV Java中矩阵就是一个类 Mat,和它扩展出来的MatOfDouble之类的类。通常创建一个矩阵对象的方法是:

Mat A = new Mat(3, 4, CvType.CV_64FC1);

或者分两步:

Mat A = new Mat();

A.create(3,4,CvType.CV_64FC1);

矩阵使用完毕不用了,要记得销毁:

A.release();

另外还有些特殊矩阵的创建方法,这个文档里倒是有,大家可以看看。这些方法一般是静态方法,可以通过类来调用。例如:

A = Mat.eye(3,3, CvType.CV_64FC1);

A = Mat.zero(3,3,CvType.CV_64FC1);

诸如MatOfDouble之类的矩阵,还支持将矩阵转换为List或者从List(array)转换成矩阵。所以可以直接这样创建矩阵:

MatOfDouble A = new MatOfDouble(1,2,3,4,5,6,7,8,9);

或者

MatOfDouble A = new MatOfDouble();

A.fromArray(1,2,3,4,5,6,7,8,9);

注意,这样得到的矩阵实际上是一个列向量,也就是9*1的矩阵。如果想得到一个3*3的矩阵,可以用reshape,

A.reshape(1,3);

reshape这个方法的参数是很坑爹的,我好长时间都以为参数是行和列,后来翻文档才发现,第一个参数是通道数,第二参数是行数。不怪别人,是我自己想当然了。

另外,Mat还有一个方法是获得矩阵尺寸的,size()。该方法也十分坑爹,返回值居然是列*行。比方说上面那个矩阵A,

System.out.println(A.size().toString());

结果是1x9。

(2) 对矩阵进行操作是很简单的,因为OpenCV有专门的方法,其他的不说了,有一个特别要命,主要是Java开发人员特别要小心的,就是矩阵的乘法。对于C++开发者而言,矩阵乘法可以直接用*搞定,例如A=B*C。Java语言是不支持运算符重载的,因此也就不可能用这么简单的形式实现,只能用方法实现。

不过你找javadoc的时候会发现,Mat类里也提供了multi的方法,哈哈……且慢欢喜,这个不是我们说的矩阵乘法,而是矩阵对应元素的乘法,真正的矩阵乘法在Core类里,需要用Core.gemm()的形式调用。我写了一个简单那的函数实现了简单的矩阵乘法:

/**

* 计算矩阵A和B的乘,得到新的矩阵C。即 C=A*B;

* 注意:A,B,C调用前必需要初始化完毕。

* @param A 被乘矩阵

* @param B 乘矩阵

* @param C 结果矩阵

* @return 矩阵C

*/

public Mat matMul(Mat A, Mat B, Mat C)

{

Core.gemm(A, B, 1.0, Mat.zeros(A.size(), A.type()), 0.0, C);

return C;

}

这个方法是有文档的,不说啥了,目前还没有找到其他更好的方法。注意Mat类里还有dot()方法和cross()方法,都是给向量准备的,一个点乘,一个叉乘,其中叉乘还只能是三元素的向量。

(3) Java矩阵类的粗浅解析

我的理解Java矩阵实际上是两个部分。一个部分是Java的矩阵说明,包括尺寸,通道数,数据类型等;另一部分是实际存储数据的区域,在Java中这部分应该是用JNI调用其C++版本里的功能实现的,所以需要create和release。因此在做矩阵复制,赋值,转换等的各种操作的时候,有的时候是完整的创建了一个新的对象,有的时候只是创建了一个Java头,数据仍然存储在原来的地方没动,所以就有可能我们创建了好多个Mat对象,而实际存储的区域可能没那么多,会有多个Mat对象引用同一块数据存储区域。release方法实际上内部也有一个类似计数的变量,每次调用release的时候就会将这个变量减一,用这种方法来保证在合适的时候释放内存。所以这么说适时的调用release还是很重要的。但实际上什么时候应该release确实是个难题。我感觉一个标准是,谁new的对象,谁就负责release。在函数内部创建的矩阵对象,当做返回值的,必须要告诉调用者去release。

(4)矩阵元素的读取和存储

Java里读取矩阵的元素和改变某位置元素的值非常麻烦。对于C++而言,A(0,0)就可以直接取出(0,0)的值,同时也可以直接赋值。Java专门有这么两个方法,就是put()和get()。例如:

double[] x = A.get(0, 0)

这个操作可以获得(0,0)位置上的元素的值。为什么是返回的数组呢?因为OpenCV的矩阵可以是多维的,也就是在(0,0)位置上的值可以有多个通道(典型的例子是图像,其元素可能是3个值的数组(R,G,B)或者4个值的数组),所以返回值是数组。对于单通道的数据类型的矩阵而言,x[0]就是它的值。

A.put(0, 0, 1.0)

这个操作将(0,0)的值设置为1.0。当然本之上也应该是一个数组的,因为这里Java定义为可变数量参数,所以也可以只输入一个1.0。

但是这样的操作太麻烦了,大家可以想象一下最简单的常用的4*3矩阵如果这么赋起值来,那出错的概率是杠杠的。

还有一个办法就是把矩阵先转换为数组,然后进行操作,操作完毕后再转换会矩阵。也就是用数组作为中转,因为Java中操作数组还是很容易的。

Mat没有提供一个专为数组的方法,只能自己写一个了。其实也很简单,还是用的上面的两个方法。

double[] value = new double[9];

A.get(0,0, value); //从(0,0)位置开始读取数据来填充数组,一直到数组满或者矩阵结尾

或者

double[] value = new double[]{1,2,3,4,5,6,7,8,9};

A.put(0,0,value); //从(0,0)位置开始填充数组里的数据,一直到数组结束

很方便吧。注意计算好数组的大小。用这种方法也可以修改矩阵的部分数据。





---------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Mat:


静态方法:
static Mat diag(Mat d)                                                                                             // 对角矩阵 单列
static Mat eye(int rows, int cols, int type)                                 // 构造单位矩阵形状的矩阵,可以不是方阵
static Mat eye(Size size, int type)                                                           // 构造单位矩阵形状的矩阵,可以不是方阵
static Mat ones(int rows, int cols, int type)                             // 构造全是1的矩阵
static Mat ones(Size size, int type)                                                       // 构造全是1的矩阵
static Mat zeros(int rows, int cols, int type)                           // 构造全是0的矩阵
static Mat zeros(Size size, int type)                                                     // 构造全是0的矩阵

构造方法:
Mat()                                                                                                             
Mat(int rows, int cols, int type)                                                               
Mat(int rows, int cols, int type, Scalar s) 
Mat(long addr) 
Mat(Mat m, Range rowRange) 
Mat(Mat m, Range rowRange, Range colRange) 
Mat(Mat m, Rect roi) 
Mat(Size size, int type) 
Mat(Size size, int type, Scalar s)  

void create(int rows, int cols, int type)                         // 如果尺寸够,则直接返回,否则释放旧的,创建新的
void create(Size size, int type) 

属性:
int cols()                                                                                           // 矩阵行数
int rows()                                                                                         // 矩阵列数
int height()                                                                                   // 图片高度 = cols()
int width()                                                                                     // 图片宽度 = rows()
int dims()                                                                                       // 矩阵维数   >=2
int channels()                                                                            // 矩阵元素通道数 1 或者 3
long dataAddr() 
Size size() 
int depth()                                                                                         // 元素深度标识
long total() 
int type() 
long getNativeObjAddr() 
long elemSize()                                                                           // 矩阵元素字节数大小 如3 = channels() * elemSize1()
long elemSize1()                                                                       // 矩阵元素每个通路的字节数大小 如1
boolean empty()                                                                     

  long step1()                                                                                   // = 列数 * 通道数
  long step1(int i) 
 
// 元素取值赋值
  int put(int row, int col, byte[] data) 
  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) 
 
  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) 
 
  Mat setTo(Mat value)                                                                         // 用另一个Mat赋值
  Mat setTo(Mat value, Mat mask) 
  Mat setTo(Scalar s)                                                                             
  Mat setTo(Scalar value, Mat mask) 
 
  // 子矩阵:
  Mat submat(int rowStart, int rowEnd, int colStart, int colEnd) 
  Mat submat(Range rowRange, Range colRange) 
  Mat submat(Rect roi) 
 
  boolean isContinuous() 
  boolean isSubmatrix() 
 
 
  Mat col(int x) 
  Mat row(int y) 
 
  Mat colRange(int startcol, int endcol) 
  Mat colRange(Range r) 
  Mat rowRange(int startrow, int endrow) 
  Mat rowRange(Range r) 
 
矩阵克隆:
  Mat clone() 
  void copyTo(Mat m)                                                           // 给 m 赋值
  void copyTo(Mat m, Mat mask) 
 

  Mat reshape(int cn) 
  Mat reshape(int cn, int rows) 
 
  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 assignTo(Mat m) 
  void assignTo(Mat m, int type) 
 

矩阵运算:
Mat diag()                                                                                 // 主对角矩阵,一维, 当元素相同时,叫标量阵,当都是1时,是单位阵
 
Mat diag(int d) 
at inv()                                                                                               // 矩阵求逆,非奇异性矩阵可逆
Mat inv(int method)                                                   
Mat cross(Mat m)                                                             // 两个向量的差乘积
Mat mul(Mat m)                                                                 // 元素层面的乘积计算
Mat mul(Mat m, double scale)                     // 元素层面的乘积计算, scale, 放大系数
double dot(Mat m)                                                         // 两矩阵点积, 各项乘积的和
Mat t()                                                                                                // 转置 (transpose)
 
矩阵转置:
矩阵A (m*n) 的转置: B(n*m) = A^T, 其中,aij = bji。
性质: (A+-)^T = A^T +- B^T,     (A*B)^T = B^T * A^T

 
  void locateROI(Size wholeSize, Point ofs) 
  Mat adjustROI(int dtop, int om, int dleft, int dright) 
 
   int checkVector(int elemChannels) 
  int checkVector(int elemChannels, int depth) 
  int checkVector(int elemChannels, int depth, boolean requireContinuous) 
    
  void push_back(Mat m) 
 
java.lang.String toString() 
java.lang.String dump() 
  void release() 

Core:
 
元素运算:
static void absdiff(Mat src1, Mat src2, Mat dst)                     // 元素级差绝对值
static void absdiff(Mat src1, Scalar src2, Mat dst)               // 元素级差绝对值
 
static void max(Mat src1, Mat src2, Mat dst) 
static void max(Mat src1, Scalar src2, Mat dst) 
static void min(Mat src1, Mat src2, Mat dst) 
static void min(Mat src1, Scalar src2, Mat dst) 
 
static void compare(Mat src1, Mat src2, Mat dst, int cmpop) 
static void compare(Mat src1, Scalar src2, Mat dst, int cmpop) 
 
static void add(Mat src1, Mat src2, Mat dst)                                                                 
static void add(Mat src1, Mat src2, Mat dst, Mat mask) 
static void add(Mat src1, Mat src2, Mat dst, Mat mask, int dtype) 
static void add(Mat src1, Scalar src2, Mat dst) 
static void add(Mat src1, Scalar src2, Mat dst, Mat mask) 
static void add(Mat src1, Scalar src2, Mat dst, Mat mask, int dtype) 
 
伸缩相加
static void scaleAdd(Mat src1, double alpha, Mat src2, Mat dst) 
按权重相加, (src1 * alpha + src2 * beta + gamma. )
static void addWeighted(Mat src1, double alpha, Mat src2, double beta, double gamma, Mat dst) 
static void addWeighted(Mat src1, double alpha, Mat src2, double beta, double gamma, Mat dst, int dtype) 

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

static void multiply(Mat src1, Mat src2, Mat dst)                                                   // 元素级乘法
static void multiply(Mat src1, Mat src2, Mat dst, double scale) 
static void multiply(Mat src1, Mat src2, Mat dst, double scale, int dtype) 
static void multiply(Mat src1, Scalar src2, Mat dst) 
static void multiply(Mat src1, Scalar src2, Mat dst, double scale) 
static void multiply(Mat src1, Scalar src2, Mat dst, double scale, int dtype) 

static void divide(Mat src1, Mat src2, Mat dst)                                               // 元素级除法
static void divide(Mat src1, Mat src2, Mat dst, double scale) 
static void divide(Mat src1, Mat src2, Mat dst, double scale, int dtype) 
static void divide(Mat src1, Scalar src2, Mat dst) 
static void divide(Mat src1, Scalar src2, Mat dst, double scale) 
static void divide(Mat src1, Scalar src2, Mat dst, double scale, int dtype) 
static void divide(double scale, Mat src2, Mat dst) 
static void divide(double scale, Mat src2, Mat dst, int dtype) 

static void bitwise_and(Mat src1, Mat src2, Mat dst)                             // 元素级位操作
static void bitwise_and(Mat src1, Mat src2, Mat dst, Mat mask) 
static void bitwise_not(Mat src, Mat dst) 
static void bitwise_not(Mat src, Mat dst, Mat mask) 
static void bitwise_or(Mat src1, Mat src2, Mat dst) 
static void bitwise_or(Mat src1, Mat src2, Mat dst, Mat mask) 
static void bitwise_xor(Mat src1, Mat src2, Mat dst) 
static void bitwise_xor(Mat src1, Mat src2, Mat dst, Mat mask) 
 
static void cartToPolar(Mat x, Mat y, Mat magnitude, Mat angle)                             // x,y 向量长度和夹角
static void cartToPolar(Mat x, Mat y, Mat magnitude, Mat angle, boolean angleInDegrees) 
x,y 向量长度
static void magnitude(Mat x, Mat y, Mat magnitude) 
x,y 向量夹角
static void phase(Mat x, Mat y, Mat angle) 
static void phase(Mat x, Mat y, Mat angle, boolean angleInDegrees) 
 
极坐标到一般坐标
static void polarToCart(Mat magnitude, Mat angle, Mat x, Mat y) 
static void polarToCart(Mat magnitude, Mat angle, Mat x, Mat y, boolean angleInDegrees) 
 
平方根,对数,指数,立方根,幂
static void sqrt(Mat src, Mat dst) 
static void log(Mat src, Mat dst) 
static void exp(Mat src, Mat dst) 
static float cubeRoot(float val) 
static void pow(Mat src, double power, Mat dst) 
 
矩阵合并
static void vconcat(java.util.List src, Mat dst)  
static void hconcat(java.util.List src, Mat dst) 
static void merge(java.util.List mv, Mat dst) 
 
矩阵分解
static void split(Mat m, java.util.List mv) 
 
重复
static void repeat(Mat src, int ny, int nx, Mat dst) 
 
矩阵运算
 
矩阵对角初始化
static void setIdentity(Mat mtx) 
static void setIdentity(Mat mtx, Scalar s) 
 
用随机数构造矩阵
static void randShuffle(Mat dst) 
static void randShuffle(Mat dst, double iterFactor) 

用正态分布的随机数构造矩阵
static void randu(Mat dst, double low, double high) 
static void randn(Mat dst, double mean, double stddev) 
 
矩阵乘法:
static void gemm(Mat src1, Mat src2, double alpha, Mat src3, double beta, Mat dst) 
static void gemm(Mat src1, Mat src2, double alpha, Mat src3, double beta, Mat dst, int flags) 
 
计算行列式:
static double determinant(Mat mtx) 
 
矩阵转换 
static void transform(Mat src, Mat dst, Mat m) 
 
矩阵转置
static void transpose(Mat src, Mat dst) 
 
逆矩阵
static double invert(Mat src, Mat dst) 
static double invert(Mat src, Mat dst, int flags) 
 
计算 马哈拉诺比斯距离 
static double Mahalanobis(Mat v1, Mat v2, Mat icovar) 
 
计算矩阵的“迹”,即对角元素和
static Scalar trace(Mat mtx) 
 
一个矩阵是否在另两个矩阵之间
static void inRange(Mat src, Scalar lowerb, Scalar upperb, Mat dst) 
 
// 范数
// Core.NORM_INF       绝对值最大
// Core.NORM_L1         绝对值值和
// Core.NORM_L2         绝对值平方和开方
static double norm(Mat src1) 
static double norm(Mat src1, int normType) 
static double norm(Mat src1, int normType, Mat mask) 
static double norm(Mat src1, Mat src2) 
static double norm(Mat src1, Mat src2, int normType) 
static double norm(Mat src1, Mat src2, int normType, Mat mask) 

static void normalize(Mat src, Mat dst) 
static void normalize(Mat src, Mat dst, double alpha, double beta, int norm_type) 
static void normalize(Mat src, Mat dst, double alpha, double beta, int norm_type, int dtype) 
static void normalize(Mat src, Mat dst, double alpha, double beta, int norm_type, int dtype, Mat mask) 
 
计算矩阵和转置矩阵乘积
static void mulTransposed(Mat src, Mat dst, boolean aTa) 
static void mulTransposed(Mat src, Mat dst, boolean aTa, Mat delta, double scale) 
static void mulTransposed(Mat src, Mat dst, boolean aTa, Mat delta, double scale, int dtype) 
 
计算特征值及特征向量
static boolean eigen(Mat src, Mat eigenvalues) 
static boolean eigen(Mat src, Mat eigenvalues, Mat eigenvectors) 
 
均值
static Scalar mean(Mat src)                                         // 计算均值
static Scalar mean(Mat src, Mat mask)       // 计算均值
static void meanStdDev(Mat src, MatOfDouble mean, MatOfDouble stddev)     // 计算均值和标准差
static void meanStdDev(Mat src, MatOfDouble mean, MatOfDouble stddev, Mat mask)     // 计算均值和
 
简单最近邻查找器
static void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx) 
static void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx, int normType, int K) 
static void batchDistance(Mat src1, Mat src2, Mat dist, int dtype, Mat nidx, int normType, int K, Mat
mask, int update, boolean crosscheck) 
 
static int borderInterpolate(int p, int len, int borderType) 

计算协方差矩阵
static void calcCovarMatrix(Mat samples, Mat covar, Mat mean, int flags) 
static void calcCovarMatrix(Mat samples, Mat covar, Mat mean, int flags, int ctype) 
 
透视变换
static void perspectiveTransform(Mat src, Mat dst, Mat m) 
 
static boolean checkRange(Mat a) 
static boolean checkRange(Mat a, boolean quiet, double minVal, double maxVal) 
static void completeSymm(Mat mtx) 
static void completeSymm(Mat mtx, boolean lowerToUpper) 
static void convertScaleAbs(Mat src, Mat dst) 
static void convertScaleAbs(Mat src, Mat dst, double alpha, double beta) 
static void copyMakeBorder(Mat src, Mat dst, int top, int bottom, int left, int right, int borderType) 
static void copyMakeBorder(Mat src, Mat dst, int top, int bottom, int left, int right, int borderType, Scalar value) 
static int countNonZero(Mat src) 
 
正向或反向余弦变换
static void dct(Mat src, Mat dst) 
static void dct(Mat src, Mat dst, int flags) 
反向离散正弦变换
static void idct(Mat src, Mat dst) 
static void idct(Mat src, Mat dst, int flags) 
 
离散傅里叶变换
static void dft(Mat src, Mat dst) 
static void dft(Mat src, Mat dst, int flags, int nonzeroRows) 
static int getOptimalDFTSize(int vecsize) 
 
反向离散傅里叶变换
static void idft(Mat src, Mat dst) 
static void idft(Mat src, Mat dst, int flags, int nonzeroRows) 
 
元素傅里叶谱乘积
static void mulSpectrums(Mat a, Mat b, Mat c, int flags) 
static void mulSpectrums(Mat a, Mat b, Mat c, int flags, boolean conjB) 
 
static void extractChannel(Mat src, Mat dst, int coi) 
static float fastAtan2(float y, float x) 
static void findNonZero(Mat src, Mat idx) 
static void flip(Mat src, Mat dst, int flipCode) 
 
把矩阵转成向量
static void reduce(Mat src, Mat dst, int dim, int rtype) 
static void reduce(Mat src, Mat dst, int dim, int rtype, int dtype) 
 
线性方程组求解
static boolean solve(Mat src1, Mat src2, Mat dst) 
static boolean solve(Mat src1, Mat src2, Mat dst, int flags) 
static int solveCubic(Mat coeffs, Mat roots) 
static double solvePoly(Mat coeffs, Mat roots) 
static double solvePoly(Mat coeffs, Mat roots, int maxIters) 
 
计算机相关
static java.lang.String getBuildInformation() 
static long getCPUTickCount() 
static int getNumberOfCPUs() 
static long getTickCount() 
static double getTickFrequency() 
 
static void insertChannel(Mat src, Mat dst, int coi) 
 
K均值
static double kmeans(Mat data, int K, Mat bestLabels, TermCriteria criteria, int attempts, int flags) 
static double kmeans(Mat data, int K, Mat bestLabels, TermCriteria criteria, int attempts, int flags, Mat centers) 
 
奇异性值分解(SVD   Singular Value Decomposition)
static void SVBackSubst(Mat w, Mat u, Mat vt, Mat rhs, Mat dst) 
static void SVDecomp(Mat src, Mat w, Mat u, Mat vt) 
static void SVDecomp(Mat src, Mat w, Mat u, Mat vt, int flags) 
 
排序
static void sort(Mat src, Mat dst, int flags) 
static void sortIdx(Mat src, Mat dst, int flags) 
 
查找表 Look Up Table
static void LUT(Mat src, Mat lut, Mat dst) 
 
static Core.MinMaxLocResult minMaxLoc(Mat src) 
static Core.MinMaxLocResult minMaxLoc(Mat src, Mat mask) 
static void mixChannels(java.util.List src, java.util.List dst, MatOfInt fromTo) 
static void patchNaNs(Mat a) 
static void patchNaNs(Mat a, double val) 
static void PCABackProject(Mat data, Mat mean, Mat eigenvectors, Mat result) 
static void PCACompute(Mat data, Mat mean, Mat eigenvectors) 
static void PCACompute(Mat data, Mat mean, Mat eigenvectors, double retainedVariance) 
static void PCACompute(Mat data, Mat mean, Mat eigenvectors, int maxComponents) 
static void PCAProject(Mat data, Mat mean, Mat eigenvectors, Mat result) 
static double PSNR(Mat src1, Mat src2) 
static void setErrorVerbosity(boolean verbose) 
static Scalar sumElems(Mat src) 
 
Mat 与 Java类型之间转换
org.opencv.utils.Converters 
static void Mat_to_vector_char(Mat m, java.util.List bs)
static void Mat_to_vector_DMatch(Mat m, java.util.List matches)
static void Mat_to_vector_double(Mat m, java.util.List ds)
static void Mat_to_vector_float(Mat m, java.util.List fs)
static void Mat_to_vector_int(Mat m, java.util.List is)
static void Mat_to_vector_KeyPoint(Mat m, java.util.List kps)
static void Mat_to_vector_Mat(Mat m, java.util.List mats)
static void Mat_to_vector_Point(Mat m, java.util.List pts)
static void Mat_to_vector_Point2d(Mat m, java.util.List pts)
static void Mat_to_vector_Point2f(Mat m, java.util.List pts)
static void Mat_to_vector_Point3(Mat m, java.util.List pts)
static void Mat_to_vector_Point3d(Mat m, java.util.List pts)
static void Mat_to_vector_Point3f(Mat m, java.util.List pts)
static void Mat_to_vector_Point3i(Mat m, java.util.List pts)
static void Mat_to_vector_Rect(Mat m, java.util.List rs)
static void Mat_to_vector_uchar(Mat m, java.util.List us)
static void Mat_to_vector_vector_char(Mat m, java.util.List> llb)
static void Mat_to_vector_vector_DMatch(Mat m, java.util.List lvdm)
static void Mat_to_vector_vector_KeyPoint(Mat m, java.util.List kps)
static void Mat_to_vector_vector_Point(Mat m, java.util.List pts)
static void Mat_to_vector_vector_Point2f(Mat m, java.util.List pts)
static void Mat_to_vector_vector_Point3f(Mat m, java.util.List pts)
static Mat vector_char_to_Mat(java.util.List bs)
static Mat vector_DMatch_to_Mat(java.util.List matches)
static Mat vector_double_to_Mat(java.util.List ds)
static Mat vector_float_to_Mat(java.util.List fs)
static Mat vector_int_to_Mat(java.util.List is)
static Mat vector_KeyPoint_to_Mat(java.util.List kps)
static Mat vector_Mat_to_Mat(java.util.List mats)
static Mat vector_Point_to_Mat(java.util.List pts)
static Mat vector_Point_to_Mat(java.util.List pts, int typeDepth)
static Mat vector_Point2d_to_Mat(java.util.List pts)
static Mat vector_Point2f_to_Mat(java.util.List pts)
static Mat vector_Point3_to_Mat(java.util.List pts, int typeDepth)
static Mat vector_Point3d_to_Mat(java.util.List pts)
static Mat vector_Point3f_to_Mat(java.util.List pts)
static Mat vector_Point3i_to_Mat(java.util.List pts)
static Mat vector_Rect_to_Mat(java.util.List rs)
static Mat vector_uchar_to_Mat(java.util.List bs)
static Mat vector_vector_char_to_Mat(java.util.List lvb, java.util.List mats)
static Mat vector_vector_DMatch_to_Mat(java.util.List lvdm, java.util.List mats)
static Mat vector_vector_KeyPoint_to_Mat(java.util.List kps, java.util.List mats)
static Mat vector_vector_Point_to_Mat(java.util.List pts, java.util.List mats)
static Mat vector_vector_Point2f_to_Mat(java.util.List pts, java.util.List mats)
static Mat vector_vector_Point3f_to_Mat(java.util.List pts, java.util.List mats) 


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值