Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách thiết lập/sửa đổi pixel (giá trị RGB) của hình ảnh bằng Java OpenCV


Một pixel là phần tử nhỏ nhất của hình ảnh số, mỗi pixel chứa giá trị alpha, đỏ, xanh lá, xanh dương. Giá trị pixel được lưu trong không gian bộ nhớ 32-bit chứa giá trị ARGB (8 bit mỗi) theo cùng thứ tự. Do đó, để sửa đổi màu của hình ảnh:

  • Cần lặp qua từng pixel trong hình ảnh.

  • Lấy giá trị pixel bằng phương thức getRGB().

  • Trích xuất giá trị ARGB từ giá trị pixel.

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

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

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

Thiết lập giá trị ARGB

Khởi tạo đối tượng Color bằng cách truyền giá trị pixel làm tham số. Lấy giá trị Đỏ, Xanh lá, Xanh dương bằng phương thức getRed(), getGreen(), getBlue(). Sau khi sửa đổi để gán lại giá trị:

  • Tạo đối tượng Color với các giá trị RGB mới.

  • Lấy giá trị pixel từ đối tượng Color bằng phương thức getRGB() của lớp Color.

  • Gán giá trị pixel mới cho hình ảnh bằng cách truyền vị trí x, y cùng giá trị pixel mới cho 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 {
// Đọc hình ảnh
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++) {
// Lấy nội dung của một pixel
int pixel = img.getRGB(x, y);
// Tạo đối tượng Color từ giá trị pixel
Color color = new Color(pixel, true);
// Lấy giá trị R G B
int red = color.getRed();
int green = color.getGreen();
int blue = color.getBlue();
// Sửa đổi giá trị RGB
green = 150;
blue = 150;
// Tạo đối tượng Color mới
color = new Color(red, green, blue);
// Gán đối tượng Color mới cho hình ảnh
img.setRGB(x, y, color.getRGB());
}
}
// Lưu hình ảnh đã chỉnh sửa
file = new File("D:\\Images\\setting_pixels.jpg");
ImageIO.write(img, "jpg", file);
System.out.println("Hoàn tất...");
}
}

Ảnh đầu vào

Cách thiết lập/sửa đổi pixel (giá trị RGB) của hình ảnh bằng Java OpenCV

Ảnh đầu ra

Cách thiết lập/sửa đổi pixel (giá trị RGB) của hình ảnh bằng Java OpenCV

Thiết lập giá trị ARGB dùng toán tử dịch bit

Để lấy từng giá trị từ pixel, bạn cần dịch phải đến vị trí bắt đầu của mỗi màu: 24 cho alpha, 16 cho đỏ, v.v. và thực hiện phép AND bitwise với 0xFF. Điều này lọc lấy 8 bit cuối và bỏ qua các bit còn lại.

Bạn có thể tái tạo pixel bằng cách dịch trái ARGB về vị trí tương ứng và nối bằng OR bitwise.

// Gán giá trị RGB mới
p = (a << 24) | (r << 16) | (g << 8) | b;
img.setRGB(x, y, p);