Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

วิธีแสดง OpenCV Mat object โดยใช้ Swing


คลาส ImageIcon เป็นการนำ Icon interface ไปปฏิบัติ ซึ่งวาดไอคอนจาก Images คุณสามารถแสดงภาพบนหน้าต่าง Swing ได้โดยใช้คลาสนี้ คอนสตรัคเตอร์ของคลาสนี้รับออบเจ็กต์ BufferedImage เป็นพารามิเตอร์

ดังนั้น เพื่อแสดงภาพ OpenCV ที่เก็บอยู่ในออบเจ็กต์ Mat โดยใช้หน้าต่าง Swing คุณต้องแปลงมันเป็นออบเจ็กต์ BufferedImage และส่งเป็นพารามิเตอร์ให้เมธอด ImageIcon

ตัวอย่างโค้ด

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 {
        // โหลดไลบรารีหลักของ OpenCV
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        // อ่านภาพจากไฟล์
        String file = "D:\\images\\tree.jpg";
        Mat image = Imgcodecs.imread(file);
        
        // เข้ารหัสภาพ
        MatOfByte matOfByte = new MatOfByte();
        Imgcodecs.imencode(".jpg", image, matOfByte);
        
        // เก็บ Mat ที่เข้ารหัสไว้ในอาร์เรย์ไบต์
        byte[] byteArray = matOfByte.toArray();
        
        // เตรียม Buffered Image
        InputStream in = new ByteArrayInputStream(byteArray);
        BufferedImage bufImage = ImageIO.read(in);
        
        // สร้าง JFrame
        JFrame frame = new JFrame();
        
        // ตั้งค่าเนื้อหาให้ JFrame
        frame.getContentPane().add(new JLabel(new ImageIcon(bufImage)));
        frame.pack();
        frame.setVisible(true);
        System.out.println("Image Loaded");
    }
}

ผลลัพธ์

เมื่อรันโปรแกรม จะแสดงผลลัพธ์ดังต่อไปนี้:

วิธีแสดง OpenCV Mat object โดยใช้ Swing