gpt4 book ai didi

java - 使用 jframe 在 mat 中显示图像(OpenCV 3.00)

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

如何在JFrame中显示Mat图像。 SetIcon() 不接受 mat 参数。显示之前应在OpenCV 3.00中使用图像。但OpenCV只能打开mat图像。有什么方法可以转换图像吗?

public void displayImage()
{
Mat image = Imgcodecs.imread(getClass().getResource("lena.png").getPath());

JFrame frame=new JFrame();
frame.setLayout(new FlowLayout());
JLabel lbl=new JLabel();
lbl.setIcon(image);
frame.add(lbl);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

}

我确实找到了转换它的代码,但它有 highgui,它不再出现在 OpenCV 3.00 中。

MatOfByte byteMat = new MatOfByte();
Highgui.imencode(".bmp", mat, byteMat);
return new Image(new ByteArrayInputStream(byteMat.toArray()));

最佳答案

将 Mat 转换为 BufferedImage,然后将其绘制在面板、 Canvas 或类似设备上:

public static BufferedImage bufferedImage(Mat m) {
int type = BufferedImage.TYPE_BYTE_GRAY;
if ( m.channels() > 1 ) {
type = BufferedImage.TYPE_3BYTE_BGR;
}
BufferedImage image = new BufferedImage(m.cols(),m.rows(), type);
m.get(0,0,((DataBufferByte)image.getRaster().getDataBuffer()).getData()); // get all the pixels
return image;
}

关于java - 使用 jframe 在 mat 中显示图像(OpenCV 3.00),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30258163/

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