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);