2014-12-07 160 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);