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

Cách chuyển đổi không gian màu của hình ảnh bằng thư viện Java OpenCV

Sử dụng giao thức không gian màu, bạn có thể biểu diễn các màu trong hình ảnh. Có một số không gian màu có sẵn trong OpenCV:

  • BGR – RGB là không gian màu phổ biến nhất, mỗi pixel bao gồm ba giá trị cường độ: đỏ, xanh lá, xanh dương. OpenCV lưu trữ mặc định dưới dạng BGR.

  • HSV – Màu được hình thành bằng cách thay đổi sắc độ (hue), độ bão hòa (saturation) và độ sáng (value).

  • CMYK – Không gian màu trừ, màu được tạo bằng cách trừ đi giá trị Cyan, Magenta, Yellow từ trắng.

  • Y'UV – Xác định không gian màu bằng một thành phần độ sáng (Y') và hai thành phần độ màu (UV). Được dùng trong các tiêu chuẩn video màu composite.

Bạn có thể chuyển đổi biểu diễn hình ảnh từ không gian màu này sang không gian khác bằng phương thức cvtColor() của lớp org.opencv.imgproc.Imgproc. Phương thức nhận hình ảnh nguồn, đích và mã màu của không gian đích.

Để chuyển từ BGR sang HSV, truyền COLOR_BGR2HSV. Tương tự, BGR sang YUV dùng COLOR_BGR2YUV.

Ví dụ

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

public class ChangingColorSpaces {
    public static void main(String args[]) throws Exception {
        // Tải thư viện lõi OpenCV
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        // Đọc hình ảnh
        Mat src = Imgcodecs.imread("D:\\images\\elephant.jpg");
        // Tạo ma trận đích trống
        Mat dst = new Mat();
        // Chuyển BGR sang Gray
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);
        HighGui.imshow("BGR sang Gray", dst);
        dst = new Mat();
        // Chuyển BGR sang HSV
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2HSV);
        HighGui.imshow("BGR sang HSV", dst);
        dst = new Mat();
        // Chuyển BGR sang YUV (lưu ý: mã COLOR_RGB2YUV trong ví dụ gốc có thể là lỗi, nên dùng COLOR_BGR2YUV)
        Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2YUV);
        HighGui.imshow("BGR sang YUV", dst);
        HighGui.waitKey();
    }
}

Hình ảnh đầu vào

Cách chuyển đổi không gian màu của hình ảnh bằng thư viện Java OpenCV

Kết quả

Chương trình tạo ra các cửa sổ sau:

BGR sang Gray

Cách chuyển đổi không gian màu của hình ảnh bằng thư viện Java OpenCV

BGR sang HSV

Cách chuyển đổi không gian màu của hình ảnh bằng thư viện Java OpenCV

BGR sang YUV

Cách chuyển đổi không gian màu của hình ảnh bằng thư viện Java OpenCV