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

Làm thế nào để Đặt / sửa đổi các pixel (giá trị RGB) của một hình ảnh bằng cách sử dụng Thư viện Java OpenCV?

Pixel là phần tử nhỏ nhất của ảnh kỹ thuật số, mỗi pixel chứa các giá trị alpha, red, green, blue. (Các) giá trị pixel được lưu trữ trong không gian bộ nhớ 32 bit, giữ các giá trị ARGB (mỗi giá trị 8 bit) theo cùng một thứ tự. Do đó, để sửa đổi màu sắc của hình ảnh -

  • Bạn cần lặp lại từng pixel trong hình ảnh.

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

  • Truy xuất các giá trị ARGB từ giá trị pixel.

  • Thực hiện các sửa đổi cần thiết đối với các giá trị RGB.

  • Tạo giá trị pixel mới bằng các giá trị RGB đã sửa đổi.

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

Đặt giá trị ARGB -

Khởi tạo đối tượng Màu bằng cách chuyển giá trị pixel làm tham số. Nhận các giá trị Red, Green, Blue bằng cách sử dụng các phương thức getRed (), getGreen () và getBlue () tương ứng. Sau khi sửa đổi để đặt lại các giá trị -

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

  • Nhận giá trị pixel từ đối tượng màu bằng phương thức getRGB () của lớp Màu.

  • Đặt giá trị pixel mới cho hình ảnh bằng cách chuyển vị trí x và y với giá trị pixel mới vào 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 SetPixels {
   public static void main(String args[])throws IOException {
      //Reading the image
      File file= new File("D:\\Images\\cat.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 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();
            //Modifying the RGB values
            green = 150;
            blue = 150;
            //Creating new Color object
            color = new Color(red, green, blue);
            //Setting new Color object to the image
            img.setRGB(x, y, color.getRGB());
         }
      }
      //Saving the modified image
      file = new File("D:\\Images\\setting_pixels.jpg");
      ImageIO.write(img, "jpg", file);
      System.out.println("Done...");
   }
}

Đầu vào

Làm thế nào để Đặt / sửa đổi các pixel (giá trị RGB) của một hình ảnh bằng cách sử dụng Thư viện Java OpenCV?

Đầu ra

Làm thế nào để Đặt / sửa đổi các pixel (giá trị RGB) của một hình ảnh bằng cách sử dụng Thư viện Java OpenCV?

Đặt giá trị ARGB bằng toán tử shift -

Để 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ị trí bắt đầu của màu sắc, 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ới0Xff. Điều này che dấu biến để lại 8 bit cuối cùng và bỏ qua tất cả các bit còn lại.

bạn có thể tạo lại một pixel bằng cách chuyển ARGB sang trái theo các vị trí tương ứng và nối chúng bằng cách sử dụng bitwise HOẶC.

//Set new RGB value
p = (a<<24) | (r<<16) | (g<<8) | b;
img.setRGB(x, y, p);