Hiển thị hình ảnh sử dụng OpenCV trong Java

Lớp Imgcodecs thuộc gói org.opencv.imgcodecs trong thư viện OpenCV cung cấp các phương thức để đọc và ghi hình ảnh. Sau đây chúng ta sẽ sử dụng lớp Imgcodecs để hiển thị hình ảnh sử dụng OpenCV trong Java.

Hiển thị hình ảnh sử dụng OpenCV trong Java bạn có thể thực hiện theo các bước sau để đọc hình ảnh trong Java bằng cách sử dụng thư viện OpenCV:

Bước 1: Tải thư viện OpenCV vào dự án

System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

Hoặc bạn có thể nạp thư viện OpenCV bằng đường dẫn chẳng hạn

System.load("C:\\OpenCV\\build\\java\\x64\\opencv_java341.dll");

Bước 2: Sử dụng lớp Imgcodecs để đọc hình ảnh từ đường dẫn sẽ trả về cho bạn đối tượng Mat

Mat mat = Imgcodecs.imread("X:\\pathimg.jpg");

Sau đó bạn cần chuyển từ đối tượng Mat sang BufferedImage

private static BufferedImage matToBufferedImage(Mat matrix) {
      try {
            MatOfByte mob = new MatOfByte();
            Imgcodecs.imencode(".jpg", matrix, mob);
            byte ba[] = mob.toArray();
            BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(ba));
            return bufferedImage;
      } catch (IOException ex) {
            ex.printStackTrace();
      }
      return null;
}

Bước 3: Cuối cùng hiển thị hình ảnh lên màn hình, toàn bộ mã nguồn giúp hiển thị hình ảnh sử dụng OpenCV trong Java như sau

package com.teamvietdev.viewimage;

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
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;

/**
 *
 * @author TVD
 */
public class JavaViewImage {

    private static BufferedImage matToBufferedImage(Mat matrix) {
        try {
            MatOfByte mob = new MatOfByte();
            Imgcodecs.imencode(".jpg", matrix, mob);
            byte ba[] = mob.toArray();
            BufferedImage bufferedImage = ImageIO.read(new ByteArrayInputStream(ba));
            return bufferedImage;
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) throws Exception {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
//        System.load("C:\\OpenCV\\build\\java\\x64\\opencv_java341.dll");

        Mat mat = Imgcodecs.imread("X:\\tayduky.jpg");

        JFrame frame = new JFrame();
        frame.getContentPane().add(new JLabel(new ImageIcon(matToBufferedImage(mat))));
        frame.pack();
        frame.setTitle("Examples JavaCV");
        frame.setResizable(false);
        frame.setLocationRelativeTo(null);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);
    }

}

Kết quả sau khi chạy đoạn mã chương trình trên:

Hiển thị hình ảnh sử dụng OpenCV trong Java

Xem thêm:

OpenCV là gì, ứng dụng OpenCV trong thế giới thực

Cài đặt OpenCV trên môi trường Windows

Khởi chạy ứng dụng OpenCV đầu tiên

Lời kết: Bạn vừa theo dõi phần hướng dẫn hiển thị hình ảnh sử dụng OpenCV, ở các bài viết kế tiếp chúng ta sẽ tìm hiểu thêm như cách hiển thị video sử dụng OpenCV, nhận dạng khuôn mặt sử dụng OpenCV… được chia sẻ miễn phí tại Team Việt Dev trong chuyên mục OpenCV.

(Tác giả: Team Việt Dev)

Bình luận