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

Đọc một hình ảnh có màu dưới dạng thang màu xám bằng cách sử dụng thư viện Java OpenCV.

imread () phương pháp của Imgcodecs lớp chấp nhận một giá trị chuỗi đại diện cho một tên tệp như một tham số. Phương thức này đọc nội dung của tệp được chỉ định thành một đối tượng ma trận và trả về nó. Sử dụng phương pháp này, bạn có thể đọc nội dung của hình ảnh.

Ngoài ra, lớp Imgcodecs cũng cung cấp một biến thể khác của phương thức này, nó chấp nhận một giá trị số nguyên đại diện cho một cờ chỉ định chế độ đọc bắt buộc.

Sau đây là các trường khác nhau của Imgcodec lớp có thể được sử dụng làm giá trị cờ.

  • IMREAD_COLOR - Nếu cờ được đặt thành giá trị này, hình ảnh đã tải sẽ được chuyển đổi thành hình ảnh màu BGR (Xanh lục Đỏ) 3 kênh.

  • IMREAD_GRAYSCALE - Nếu cờ được đặt thành giá trị này, hình ảnh đã tải sẽ được chuyển đổi thành hình ảnh thang độ xám đơn kênh.

  • IMREAD_LOAD_GDAL - Nếu cờ được đặt thành giá trị này, bạn có thể tải hình ảnh bằng trình điều khiển GDAL.

  • IMREAD_ANYCOLOR - Nếu cờ được đặt thành giá trị này, hình ảnh sẽ được đọc ở bất kỳ định dạng màu nào có thể.

  • IMREAD_REDUCED_COLOR_2 hoặc,
    IMREAD_REDUCED_COLOR_4 hoặc,
    IMREAD_REDUCED_COLOR_8
    - Nếu cờ được đặt thành giá trị này, hình ảnh được đọc là BGR ba kênh và kích thước của hình ảnh được giảm xuống ½, ¼th hoặc ⅛ kích thước ban đầu của hình ảnh đối với trường được sử dụng.

  • IMREAD_REDUCED_GRAYSCALE_2 hoặc,
    IMREAD_REDUCED_GRAYSCALE_4 hoặc,
    IMREAD_REDUCED_GRAYSCALE_8
    - Nếu cờ được đặt thành giá trị này, hình ảnh được đọc dưới dạng hình ảnh thang độ xám đơn kênh và kích thước của hình ảnh được giảm xuống còn ½, ¼th hoặc ⅛ kích thước ban đầu của hình ảnh đối với trường được sử dụng.

  • IMREAD_UNCHANGED - Nếu cờ được đặt thành giá trị này, hình ảnh đã tải sẽ được trả về như ban đầu.

Do đó, nếu bạn cần đọc hình ảnh có màu dưới dạng hình ảnh thang độ xám, bạn nên chuyển IMREAD_GRAYSCALE hoặc IMREAD_REDUCED_GRAYSCALE_X làm tham số.

Ví dụ 1

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class ReadAsGreyScale {
   public static void main(String args[]) {
      //Loading the OpenCV core library
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
      //Reading the Image from the file
      Mat matrix = Imgcodecs.imread("D://images//sunset.jpg", Imgcodecs.IMREAD_GRAYSCALE);
      //Writing the image
      Imgcodecs.imwrite("D://images//sunset_greyscale.jpg", matrix);
      System.out.println("Image re-Saved");
   }
}

Đầu vào

Đọc một hình ảnh có màu dưới dạng thang màu xám bằng cách sử dụng thư viện Java OpenCV.

Đầu ra

Đọc một hình ảnh có màu dưới dạng thang màu xám bằng cách sử dụng thư viện Java OpenCV.

Ví dụ 2

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class ReadingAsGrey2 {
   public static void main(String args[]) {
      //Loading the OpenCV core library
      System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
      String input = "D://images//sunset.jpg";
      //Reading the Image from the file
      Mat matrix = Imgcodecs.imread(input, Imgcodecs.IMREAD_REDUCED_GRAYSCALE_4 );
      //Writing the image
      Imgcodecs.imwrite("D://images//sunset_grey_8.jpg", matrix);
      System.out.println("Image re-Saved");
   }
}

Đầu ra

Đọc một hình ảnh có màu dưới dạng thang màu xám bằng cách sử dụng thư viện Java OpenCV.