我正在使用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();