作者目前正在做一个小型图像处理系统,目前已知道可以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
类型:
将 Image
对象转换为 BufferedImage
对象。可以使用 ImageIO.read()
方法将 Image
对象转换为 BufferedImage
对象,示例代码如下:
BufferedImage bufferedImage = ImageIO.read(tmp);
将 BufferedImage
对象转换为 Mat
对象。可以使用 Java2DFrameUtils.toMat()
方法将 BufferedImage
对象转换为 Mat
对象,示例代码如下:
Mat mat = Java2DFrameUtils.toMat(bufferedImage);
最终得到的 mat
变量即为 Mat
类型的图像数据,可以进一步进行图像处理操作。