Computer >> Máy Tính >  >> Lập trình >> Java

Làm cách nào để thay đổ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ể thể hiện màu sắc trong hình ảnh. Có một số không gian màu có sẵn trong OpenCV, một số trong số đó là -

  • BGR - RGB là không gian màu được sử dụng rộng rãi nhất hiện nay, mỗi pixel thực sự được hình thành bởi ba giá trị màu (cường độ) khác nhau:đỏ, xanh lam và xanh lục, nó là không gian màu mặc định trong OpenCV nhưng nó được lưu trữ dưới dạng BGR.

  • HSV - Trong không gian màu HSV, các màu khác nhau được hình thành bằng cách thay đổi màu sắc, độ bão hòa và độ sáng.

  • CMK - Đây là không gian màu trừ, trong không gian này các màu khác nhau được hình thành bằng cách trừ các giá trị Lục lam, Đỏ tươi và Vàng, bắt đầu từ màu trắng.

  • Y’UV - Y’UV xác định không gian màu theo một thành phần luma (Y ’) và hai thành phần sắc độ (UV). Mô hình màu Y’UV được sử dụng trong các tiêu chuẩn video màu tổng hợp sau đây.

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

Để thay đổi không gian màu từ BGR thành HSV, bạn cần chuyển COLOR_BGR2HSV như giá trị mã màu. Tương tự để thay đổi không gian màu từ BGR thành YUV, bạn cần chuyển COLOR_BGR2YUV như mã màu.

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 {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the image
      Mat src = Imgcodecs.imread("D:\\images\\elephant.jpg");
      //Creating the empty destination matrix
      Mat dst = new Mat();
      //Converting From BGR to Gray
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);
      HighGui.imshow("BGR to Gray", dst);
      dst = new Mat();
      //Converting From BGR to HSV
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2HSV);
      HighGui.imshow("BGR to HSV", dst);
      dst = new Mat();
      //Converting From BGR to HSV
      Imgproc.cvtColor(src, dst, Imgproc.COLOR_RGB2YUV);
      HighGui.imshow("BGR to YUV", dst);
      HighGui.waitKey();
   }
}

Hình ảnh đầu vào

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

Đầu ra

Khi thực thi, chương trình trên tạo các cửa sổ sau -

BGR thành Xám -

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

BGR sang HSV -

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

BGR sang YUV -

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