为Mat对象创建包装类时出错(获取“多个通道计数”错误)

时间:2015-06-17 13:31:07

标签: java opencv serialization mat

我正在使用Java中的包装类来处理Mat对象,并且在以下行mat.put(0, 0, data);上收到错误

  

Caught Error:java.lang.UnsupportedOperationException:提供的数据   元素号(0)应该是Mat通道数(4)的倍数

以下是我使用的代码

import java.io.Serializable;

public class MatWrapper implements Serializable {
    int rows;
    int cols;
    int type;
    byte[] data;

    public MatWrapper() {
    }

    public MatWrapper(Mat mat)
    {
        if (mat.isContinuous()) {

            int elemSize = (int) mat.elemSize();
            rows = mat.rows();
            cols = mat.cols();
            type = mat.type();

            byte[] data = new byte[cols * rows * elemSize];
            mat.get(0, 0, data);
        }
    }

    public Mat toMat()
    {
        Mat mat = new Mat(rows, cols, type);
        mat.put(0, 0, data);
        return mat;
    }
}

使用它我正在进行以下调用:

// convert Mat object to a wrapper object
MatWrapper wrapper = new MatWrapper(mat);

// this wrapper object is serializable

Mat mat = wrapper.toMat();

0 个答案:

没有答案