用Java打印OpenCV矩阵内容

10

我在Java中有一个OpenCV矩阵,我想打印出它的内容。我尝试使用toString()函数,如下所示:descriptor.toString(),以此来实现。

"[[1,2,3,4],[4,5,6,7],[7,8,9,10]]"

每个数组都是矩阵中的第i行,但我得到了以下结果。我尝试去掉toString但问题仍然存在。

Mat [ 3*4*CV_8UC1, isCont=true, isSubmat=false, nativeObj=0x5dc93a48, dataAddr=0x5d5d35f0]

3表示行数,4表示列数。

请问如何获取矩阵内容?!

2个回答

12

代码:

    int[][] testArray = new int[][]{{1,2,3,4},{4,5,6,7},{7,8,9,10}};
    Mat matArray = new Mat(3,4,CvType.CV_8UC1);
    for(int row=0;row<3;row++){
        for(int col=0;col<4;col++)
            matArray.put(row, col, testArray[row][col]);
    }
    System.out.println("Printing the matrix dump");
    System.out.println(matArray.dump());

输出:
打印矩阵转储
[1,2,3,4;
4,5,6,7;
7,8,9,10]


7

虽然不完全和[[1,2,3,4],[4,5,6,7],[7,8,9,10]]一样,但它可以工作:

Mat freqs = Mat.zeros(10, 10, CvType.CV_32F);

// do math...

String dump = freqs.dump();
Log.d(TAG, dump);

1
有时候在使用Log和dump()时会出现崩溃,有什么想法吗? - Srinivasan N

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接