如何使用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