如何使用Java OpenCV庫設定/修改影像的畫素(RGB值)?
畫素是數字影像中最小的元素,每個畫素包含alpha、紅色、綠色、藍色值的數值。畫素值儲存在32位記憶體空間中,按順序儲存ARGB值(每個8位)。因此,要修改影像的顏色 -
您需要遍歷影像中的每個畫素。
使用getRGB()方法獲取畫素值。
從畫素值中檢索ARGB值。
對RGB值執行所需的修改。
使用修改後的RGB值建立新的畫素值。
使用setRGB()方法設定新的畫素值。
設定ARGB值 -
透過將畫素值作為引數傳遞來例項化Color物件。分別使用getRed()、getGreen()和getBlue()方法獲取紅色、綠色、藍色值。修改後,將值設定回 -
建立一個Color物件,並透過新的RGB值作為引數。
使用Color類的getRGB()方法從顏色物件獲取畫素值。
透過將x和y位置以及新的畫素值傳遞給setRGB()方法,將新的畫素值設定為影像。
示例
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...");
}
}輸入
![]()
輸出
![]()
使用移位運算子設定ARGB值 -
要從畫素中檢索每個值,您需要將其右移到每個顏色的起始位置,即alpha為24,紅色為16,依此類推,並與0Xff執行按位與運算。這將掩蓋變數,只保留最後8位,並忽略所有其他位。
您可以透過將ARGB向左移到它們各自的位置,並使用按位或運算將它們組合起來,來重建畫素。
//Set new RGB value p = (a<<24) | (r<<16) | (g<<8) | b; img.setRGB(x, y, p);
廣告
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP