如何使用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);
廣告