2012-09-08 100 views
4

我想初始化一個3×3的十字形內核矩陣,並用它來擴大OpenCV4Android中的圖像。在本機C++ OpenCV中,你會這樣做:Android的OpenCV - 初始化矩陣

Mat kernel = (Mat_<int>(3,3) << 0,1,0,1,1,1,0,1,0); 
dilate(image, image, kernel); 

但是我怎麼能做到等同於Java的第一行呢? Mat不能像數組一樣對待,Java沒有運算符。似乎有一個名爲cvCreateStructuringElementEx的OpenCV函數初始化Mats以用作內核,但我在OpenCV4Android中找不到此函數。

非常感謝。

回答

3

我從來沒有試過,但檢查是否正常工作,至少這是設置一個結構元OpenCV4Android方式:

Mat kernel = Imgproc.getStructuringElement(Imgproc.MORPH_CROSS, new Size(3, 3)); 

此外,檢查出CopyTo從()方法,它可以接收一個面膜:

src_mat.copyTo(dst_mat, mask); 
+0

我假設這很好,雖然我也通過發送kernel = new Mat()來獲得它的工作。 –

+1

這將工作,但你的內核將是別的東西(一些默認),而不是你提到的3x3交叉。 –

+0

啊,明白了。當我有空時,我會比較兩者。 –