2014-12-07 121 views
4

如何使用Java OpenCV创建和分配Mat?从this page的C++版本是声明OpenCV中的Mat

Mat C = (Mat_<double>(3,3) << 0, -1, 0, -1, 5, -1, 0, -1, 0); 

什么是在Java OpenCV等效?看起来,Java OpenCV的文档是缺乏的。存在的东西通常包含无法在Java中运行的C++代码。

回答

10

是的。文档很少或不存在。的等效将是

Mat img = new Mat(3, 3, CvType.CV_64FC1); 
int row = 0, col = 0; 
img.put(row ,col, 0, -1, 0, -1, 5, -1, 0, -1, 0); 

在OpenCV中Java文档(1)为Mat类,见重载put方法

public int put(int row, int col, double... data) 
public int put(int row, int col, float[] data) 
public int put(int row, int col, int[] data) 
public int put(int row, int col, short[] data) 
public int put(int row, int col, byte[] data) 

我们可以看到,对于比double其他数据类型,最后一个参数是一个数组和不可变参数类型。所以如果选择创建不同类型的Mat,我们将需要使用如下的阵列

int row = 0, col = 0; 
int data[] = { 0, -1, 0, -1, 5, -1, 0, -1, 0 }; 
//allocate Mat before calling put 
Mat img = new Mat(3, 3, CvType.CV_32S); 
img.put(row, col, data);