Java中以Mat的类型读入图片的方法除了指定路径还有那些

作者目前正在做一个小型图像处理系统,目前已知道可以Mat类型可以直接指定路径定义

Mat mat = Imgcodecs.imread(path, 0);

但是我现在如果有一个Image类型的tmp变量,应该如何进行定义呢?
Mat mat = tmp;这样定义会报错

还可以用 BufferedImage

BufferedImage bufferedImage = (BufferedImage) tmp;
Mat mat = new Mat(bufferedImage.getHeight(), bufferedImage.getWidth(), CvType.CV_8UC3);
byte[] data = ((DataBufferByte) bufferedImage.getRaster().getDataBuffer()).getData();
mat.put(0, 0, data);

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

如果你已经有一个 Image 类型的变量 tmp,可以通过以下步骤将其转换为 Mat 类型:

  1. Image 对象转换为 BufferedImage 对象。可以使用 ImageIO.read() 方法将 Image 对象转换为 BufferedImage 对象,示例代码如下:

    BufferedImage bufferedImage = ImageIO.read(tmp);
    
  2. BufferedImage 对象转换为 Mat 对象。可以使用 Java2DFrameUtils.toMat() 方法将 BufferedImage 对象转换为 Mat 对象,示例代码如下:

    Mat mat = Java2DFrameUtils.toMat(bufferedImage);
    

最终得到的 mat 变量即为 Mat 类型的图像数据,可以进一步进行图像处理操作。