Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为Mat对象创建包装类时出错(获取多个通道计数时出错)_Java_Opencv_Serialization_Mat - Fatal编程技术网

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

Java 为Mat对象创建包装类时出错(获取多个通道计数时出错),java,opencv,serialization,mat,Java,Opencv,Serialization,Mat,我正在Java中为Mat对象使用一个包装器类,在下面的Mat.put(0,0,data)行中得到一个错误作为 捕获错误:java.lang.UnsupportedOperationException:提供的数据 元件编号(0)应为Mat通道计数(4)的倍数 下面是我使用的代码 import java.io.Serializable; public class MatWrapper implements Serializable { int rows; int cols;

我正在Java中为Mat对象使用一个包装器类,在下面的
Mat.put(0,0,data)行中得到一个错误作为

捕获错误: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();