java - 将 BufferedImage TYPE_INT_RGB 转换为 OpenCV Mat 对象

标签 java opencv bufferedimage mat

我将 BufferedImage 存储在 MySQL 数据库中,并将它们检索到 java 应用程序。

BufferedImages 的类型为 TYPE_INT_RGB。

如何将该图像转换为 OpenCV Mat 对象?

我总是得到一个

java.lang.UnsupportedOperationException: Mat data type is not compatible: 

异常。

有人可以帮忙吗?

最佳答案

我自己得到的。

    int[] data = ((DataBufferInt)image.getRaster().getDataBuffer()).getData();
    ByteBuffer byteBuffer = ByteBuffer.allocate(data.length * 4); 
    IntBuffer intBuffer = byteBuffer.asIntBuffer();
    intBuffer.put(data);

    Mat mat = new Mat(image.getHeight(), image.getWidth(), CvType.CV_8UC3);
    mat.put(0, 0, byteBuffer.array());
    return mat;

image 是 BufferedImage,您想要转换为 Mat-Object。

关于java - 将 BufferedImage TYPE_INT_RGB 转换为 OpenCV Mat 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21175336/

相关文章:

java - freemarker 模板和 smooks 中的注释

java - 您是否为私有(private)方法提供 DEBUG 日志记录级别?

java - 导入 javax.imageio.ImageIO;有错误

c++ - 生成三 channel LUT 掩码的有效方法

java - 从不可见的 AWT 组件创建图像?

java - 如何在java中将缓冲图像打印为缩略图?

java - 未调用 JdbcOperations 中使用的 Spring AOP 方面

c++ - fatal error : opencv2/opencv_modules. hpp:没有这样的文件或目录 #include "opencv2/opencv_modules.hpp"

ios - 在 iOS OpenCV 相机中将相机预览旋转为人像

java - 每次渲染前未清除 BufferedImage