下面是将缓冲图像转换为 Mat 类型的 java 代码。当我运行这个函数时,我得到以下异常:
public static Mat bufferedImageToMat(BufferedImage image) {
Mat mat = new Mat(image.getHeight(), image.getWidth(), CvType.CV_8UC1);
int[] data = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();
mat.put(0, 0, data);
return mat;
}
我也在谷歌上搜索了错误,我也在堆栈溢出中关注了类似的问题,但是,这对我没有帮助。有人可以帮我从这里出去吗。我卡住了。
最佳答案
我不完全确定这是否会有所不同,但您可以尝试更改
int[] data = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();到
byte[] data = ((DataBufferByte)image.getRaster().getDataBuffer()).getData();
我试图重现您的错误,但无济于事。我仅在将代码更改为使用 int [] 而不是 byte [] 时才遇到错误。
关于java - 使用 OpenCv 时,Java 中的 Mat Data type not supported 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39869351/