使用OpenCv时java中的Mat数据类型不受支持错误

使用OpenCv时java中的Mat数据类型不受支持错误,java,opencv,bufferedimage,mat,Java,Opencv,Bufferedimage,Mat,下面是将缓冲图像转换为Mat类型的java代码。运行此函数时,我遇到以下异常:线程“main”java.lang.UnsupportedOperationException中的异常:Mat数据类型不兼容: public static Mat bufferedImageToMat(BufferedImage image) { Mat mat = new Mat(image.getHeight(), image.getWidth(), CvType.CV_8UC1); int[] dat

下面是将缓冲图像转换为Mat类型的java代码。运行此函数时,我遇到以下异常:线程“main”java.lang.UnsupportedOperationException中的异常:Mat数据类型不兼容:

  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();到

字节[]数据=((DataBufferByte)image.getRaster().getDataBuffer()).getData()


我试图重现你的错误,但没有成功。我只是在将代码更改为使用int[]而不是byte[]时出错。

我不完全确定这是否会产生影响,但您可以尝试更改

int[]data=((DataBufferInt)image.getRaster().getDataBuffer()).getData();到

字节[]数据=((DataBufferByte)image.getRaster().getDataBuffer()).getData()


我试图重现你的错误,但没有成功。我只是在将代码更改为使用int[]而不是byte[]时出错.

我之前有个字节,但仍然有相同的错误,然后我转换成int,这是相同的。你可以在调用方法的地方发布代码吗?我之前有个字节,但仍然有相同的错误,然后我转换成int,这是相同的。你可以在调用方法的地方发布代码吗?我可以问一下为什么这个问题被否决了吗?我可以问一下吗为什么这个问题被否决了?