get(row,col,double [])Opencv Android

时间:2013-08-01 09:36:41

标签: android opencv

我只是尝试使用此网站上的解决方案,在Android应用中从OpenCv访问我的数据。

int size = (int) this.getMyMat().total() * this.getMyMat().channels();
double[] buff = new double[size];
this.getMyMat().get(0, 0, buff);

第3行崩溃我的应用程序,我收到此错误: java.lang.UnsupportedOperationException:Mat数据类型不兼容:0

我不知道为什么,这只是来自这里的副本/过去:OpenCV for Android - Access elements of Mat

这里是来自OpenCV的get方法的复制/粘贴:

public int get(int row, int col, double[] data) {
    int t = type();
    if (data == null || data.length % CvType.channels(t) != 0)
        throw new java.lang.UnsupportedOperationException(
                "Provided data element number (" +
                        (data == null ? 0 : data.length) +
                        ") should be multiple of the Mat channels count (" +
                        CvType.channels(t) + ")");
    if (CvType.depth(t) == CvType.CV_64F) {
        return nGetD(nativeObj, row, col, data.length, data);
    }
    throw new java.lang.UnsupportedOperationException("Mat data type is not compatible: " + t);
}

准确地说我的this.getMyMat()来自:

Imgproc.adaptiveThreshold(this.getMyGrayMat(), dst, max_BINARY_value, Imgproc.ADAPTIVE_THRESH_GAUSSIAN_C, threshold_type, 27, 3);

所以这是一款纯黑色和白色的垫子。

1 个答案:

答案 0 :(得分:1)

好的,正如我在问题的最后所说,我的垫子是黑白的。

所以我不需要使用

double[] buff = new double[size];

byte[] buff = new byte[size];