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

Làm thế nào để chuyển đổi một hình ảnh tích cực thành Âm bản để sử dụng thư viện OpenCV?

Thuật toán chuyển đổi hình ảnh thành âm bản

  • Nhận các giá trị xanh lam xanh đỏ của mỗi pixel

  • Trừ từng giá trị màu cho 255 và lưu chúng dưới dạng giá trị màu mới.

  • Tạo giá trị pixel mới từ các màu đã sửa đổi.

  • đặt giá trị mới thành pixel.

Triển khai trong Java

  • Đọc hình ảnh được yêu cầu bằng phương thức ImageIO.read ().

  • Lấy chiều cao và chiều rộng của hình ảnh.

  • Sử dụng các vòng lặp for lồng nhau đi qua từng pixel trong hình ảnh.

  • Nhận giá trị pixel bằng phương thức getRGB ().

  • Tạo đối tượng Màu bỏ qua tham số giá trị pixel được truy xuất ở trên.

  • Nhận các giá trị đỏ, lục, lam từ đối tượng màu bằng cách sử dụng các phương thức getRed (), getGreen () và getBlue () tương ứng.

  • Tính toán các giá trị màu đỏ, xanh lục và xanh lam mới như được chỉ định trong thuật toán.

  • Tạo một đối tượng Màu mới bỏ qua các giá trị RGB mới làm tham số.

  • Lấy pixel

  • Đặt (các) giá trị pixel mới bằng phương thức setRGB ().

Ví dụ

import java.io.File;
import java.io.IOException;
import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
public class Color2Negative {
   public static void main(String args[])throws IOException {
      //Reading the image
      File file= new File("D:\\Images\\car3.jpg");
      BufferedImage img = ImageIO.read(file);
      for (int y = 0; y < img.getHeight(); y++) {
         for (int x = 0; x < img.getWidth(); x++) {
            //Retrieving the values of a pixel
            int pixel = img.getRGB(x,y);
            //Creating a Color object from pixel value
            Color color = new Color(pixel, true);
            //Retrieving the R G B values
            int red = color.getRed();
            int green = color.getGreen();
            int blue = color.getBlue();
            //Subtracting RGB from 255 to convert into negative
            red = 255-red;
            green = 255-green;
            blue = 255-blue;
            //Creating new Color object
            color = new Color(red, green, blue);
            int newPixel = color.getRGB();
            //Setting new Color object to the image
            img.setRGB(x, y, newPixel);
         }
      }
      //Saving the modified image
      file = new File("D:\\Images\\negative_image.jpg");
      ImageIO.write(img, "jpg", file);
      System.out.println("Done...");
   }
}

Đầu vào

Làm thế nào để chuyển đổi một hình ảnh tích cực thành Âm bản để sử dụng thư viện OpenCV?

Đầu ra

Làm thế nào để chuyển đổi một hình ảnh tích cực thành Âm bản để sử dụng thư viện OpenCV?