Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách hiển thị OpenCV Mat object bằng Swing

Lớp ImageIcon (implement Icon) cho phép vẽ icon từ ảnh. Để hiển thị ảnh OpenCV (lưu trong Mat) trên cửa sổ Swing, cần chuyển Mat sang BufferedImage rồi truyền cho ImageIcon.

Ví dụ

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.imgcodecs.Imgcodecs;

public class DisplayingImagesUsingSwings {
    public static void main(String args[]) throws Exception {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        String file = "D:\\images\\tree.jpg";
        Mat image = Imgcodecs.imread(file);
        // Mã hóa ảnh sang MatOfByte
        MatOfByte matOfByte = new MatOfByte();
        Imgcodecs.imencode(".jpg", image, matOfByte);
        // Chuyển sang byte array
        byte[] byteArray = matOfByte.toArray();
        // Tạo BufferedImage
        InputStream in = new ByteArrayInputStream(byteArray);
        BufferedImage bufImage = ImageIO.read(in);
        // Hiển thị trên JFrame
        JFrame frame = new JFrame();
        frame.getContentPane().add(new JLabel(new ImageIcon(bufImage)));
        frame.pack();
        frame.setVisible(true);
        System.out.println("Image Loaded");
    }
}

Kết quả

Cửa sổ Swing hiển thị ảnh:

Cách hiển thị OpenCV Mat object bằng Swing