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

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

Để chuyển đổi hình ảnh âm bản sang hình ảnh tích cực -

  • Đọ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 ().

  • Để truy xuất từng giá trị từ một pixel, bạn cần phải dịch chuyển sang phải về vị trí bắt đầu của mỗi màu, tức là 24 cho alpha 16 cho màu đỏ, v.v. và thực hiện theo chiều dọc và thao tác với 0Xff. Điều này che dấu biến để lại 8 bit cuối cùng và đánh dấu tất cả các bit còn lại.

  • Tính các giá trị đỏ, lục và lam mới bằng cách trừ chúng cho 255.

  • Tạo lại một pixel bằng cách dịch chuyển ARGB sang trái ở các vị trí tương ứng của chúng và nối chúng bằng cách sử dụng bitwise OR.

  • Đặ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.image.BufferedImage;
import javax.imageio.ImageIO;
public class Negative2Color {
   public static void main(String args[])throws IOException {
      //Reading the image
      File file= new File("D:\\Images\\cat_neg.jpg");
      BufferedImage img = ImageIO.read(file);
      for (int y = 0; y < img.getHeight(); y++) {
         for (int x = 0; x < img.getWidth(); x++) {
            //Retrieving contents of a pixel
            int p = img.getRGB(x,y);
            //Getting the A R G B values from the pixel value
            int a = (p>>24)&0xff;
            int r = (p>>16)&0xff;
            int g = (p>>8)&0xff;
            int b = p&0xff;
            //Subtract RGB from 255
            r = 255 - r;
            g = 255 - g;
            b = 255 - b;
            //Set new RGB value
            p = (a<<24) | (r<<16) | (g<<8) | b;
            img.setRGB(x, y, p);
         }
      }
      //Saving the modified image
      file = new File("D:\\Images\\negative_positive.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 âm bản sang hình ảnh tích cực bằng cách sử dụng thư viện Java OpenCV?

Đầu ra

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