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

Cách chuyển đổi hình ảnh dương bản sang âm bản bằng OpenCV


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

  • Lấy giá trị đỏ, xanh lá, xanh dương của mỗi pixel.
  • Trừ mỗi giá trị màu từ 255 và lưu làm giá trị màu mới.
  • Tạo giá trị pixel mới từ các màu đã sửa đổi.
  • Gán giá trị mới cho pixel.

Triển khai trong Java

  • Đọc hình ảnh bằng ImageIO.read().
  • Lấy chiều cao và chiều rộng.
  • Dùng vòng lặp for lồng nhau duyệt qua từng pixel.
  • Lấy giá trị pixel bằng getRGB().
  • Tạo đối tượng Color từ giá trị pixel.
  • Lấy giá trị đỏ, xanh lá, xanh dương từ đối tượng Color.
  • Tính toán giá trị đỏ, xanh lá, xanh dương mới như thuật toán.
  • Tạo đối tượng Color mới từ các giá trị RGB mới.
  • Lấy giá trị pixel.
  • Gán giá trị pixel mới bằng 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 {
// Đọc hình ảnh
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++) {
// Lấy giá trị 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();
// Trừ RGB từ 255 để chuyển sang âm bản
red = 255 - red;
green = 255 - green;
blue = 255 - blue;
// Tạo đối tượng Color mới
color = new Color(red, green, blue);
int newPixel = color.getRGB();
// Gán đối tượng Color mới cho hình ảnh
img.setRGB(x, y, newPixel);
}
}
// Lưu hình ảnh đã chỉnh sửa
file = new File("D:\\Images\\negative_image.jpg");
ImageIO.write(img, "jpg", file);
System.out.println("Hoàn tất...");
}
}

Ảnh đầu vào

Cách chuyển đổi hình ảnh dương bản sang âm bản bằng OpenCV

Ảnh đầu ra

Cách chuyển đổi hình ảnh dương bản sang âm bản bằng OpenCV