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++代码。
如何使用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++代码。
是的。文档很少或不存在。的等效将是
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);