java - 使用 OpenCv 时,Java 中的 Mat Data type not supported 错误

标签 java opencv bufferedimage mat

下面是将缓冲图像转换为 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/

相关文章:

c++ - 使用 OpenCv 检测图像中的矩形亮区

java - 使用 Tomcat 运行带有外部库的应用程序时出现 NoClassDefFoundError

java - 是否可以实现tostring字符串方法和printf?

java - 通过 Java 获取 Chrome URL

java - 拼接2张图片(OpenCV)

c++ - 无法将参数 8 从 'int' 转换为 'cv::HOGDescriptor::HistogramNormType'

java - 从 BufferedImage 获取文件名

java - 缓冲图像调整大小

java - 将数据库中的 blob 图像显示到 jlabel 中

java - BottomNavigationView 设置为不可点击