gpt4 book ai didi

java - OpenCV 输出在 Jpanel 中使用 Mat 对象

转载 作者:行者123 更新时间:2023-12-02 06:06:04 26 4
gpt4 key购买 nike

我知道我们可以使用 Jpanel 使用以下代码输出图像:

   JFrame frame = new JFrame("IMG");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

frame.setResizable(true);
frame.setLocationRelativeTo(null);

ImageIcon image = new ImageIcon(".../img.jpg");
frame.setSize(image.getIconWidth()+10,image.getIconHeight()+35);

JLabel label1 = new JLabel(" ", image, JLabel.CENTER);
frame.getContentPane().add(label1);

frame.validate();
frame.setVisible(true);

此代码假设我已在目录中创建或已有图像文件。但我想做的是直接在Jpanel中输出图像,而不创建图像文件。如何在 JAVA 中使用 OpenCV Mat 对象来做到这一点?

最佳答案

您可以使用以下方法将 Mat 对象转换为 BufferedImage 对象:

public static BufferedImage createAwtImage(Mat mat) {

int type = 0;
if (mat.channels() == 1) {
type = BufferedImage.TYPE_BYTE_GRAY;
} else if (mat.channels() == 3) {
type = BufferedImage.TYPE_3BYTE_BGR;
} else {
return null;
}

BufferedImage image = new BufferedImage(mat.width(), mat.height(), type);
WritableRaster raster = image.getRaster();
DataBufferByte dataBuffer = (DataBufferByte) raster.getDataBuffer();
byte[] data = dataBuffer.getData();
mat.get(0, 0, data);

return image;
}

然后你可以简单地使用ImageIcon显示图像:

// Load image using Highgui or create Mat object other way you want
Mat mat = Highgui.imread(".../img.jpg");

ImageIcon image = new ImageIcon(createAwtImage(mat));

关于java - OpenCV 输出在 Jpanel 中使用 Mat 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22284823/

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