gpt4 book ai didi

java - 在 Java 中将 BufferedImage 转换为 Mat (OpenCV)

转载 作者:太空宇宙 更新时间:2023-11-03 21:46:47 26 4
gpt4 key购买 nike

<分区>

我试过这个 link并有下面的代码。我的程序以 BufferedImage 格式导入图像,然后将其显示给用户。我正在使用 matchingTemplate OpenCV 中的函数需要我将其转换为 Mat 格式。

如果我导入图像 -> 将其转换为 Mat 然后使用 imwrite 保存图像,则代码有效。该程序还允许用户裁剪图像,然后使用 Template matching将其与另一幅图像进行比较。当我尝试将裁剪后的图像转换为 Mat 时出现问题,我需要使用以下代码将其从 Int 转换为 Byte:

im = new BufferedImage(im.getWidth(), im.getHeight(),BufferedImage.TYPE_3BYTE_BGR);

然而,这会导致黑色图像。但如果我摆脱它,它只适用于导入的图像而不是裁剪。这里发生了什么?我确定这与覆盖过程有关,因为我已经使用读入图像测试了模板匹配功能。

// Convert image to Mat
public Mat matify(BufferedImage im) {
// Convert INT to BYTE
//im = new BufferedImage(im.getWidth(), im.getHeight(),BufferedImage.TYPE_3BYTE_BGR);
// Convert bufferedimage to byte array
byte[] pixels = ((DataBufferByte) im.getRaster().getDataBuffer())
.getData();

// Create a Matrix the same size of image
Mat image = new Mat(im.getHeight(), im.getWidth(), CvType.CV_8UC3);
// Fill Matrix with image values
image.put(0, 0, pixels);

return image;

}

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com