java 根据图片的rgb求灰度值

java 根据图片的rgb求灰度值,第1张

public int filterRGB(int x, int y, int rgb) {

int a = rgb & 0xff000000;//将最高位(24-31)的信息(alpha通道)存储到a变量

int r = (rgb >> 16) & 0xff;//取出次高位(16-23)红色分量的信息

int g = (rgb >> 8) & 0xff;//取出中位(8-15)绿色分量的信息

int b = rgb & 0xff;//取出低位(0-7)蓝色分量的信息

rgb = (r 77 + g 151 + b 28) >> 8; // NTSC luma,算出灰度

return a | (rgb << 16) | (rgb << 8) | rgb;//将灰度值送入各个颜色分量

}

//没听懂你的需求,能更清楚一些吗?

我以前的一个程序使用BufferedImage读取图像像素点的RGB值,例子在下面。

你从例子中了解一下用一个整数表示RGB颜色的方法。然后用setRGB方法满足你的要求。

方法:

javaawtimageBufferedImage

public int getRGB(int x,int y)

返回默认 RGB 颜色模型 (TYPE_INT_ARGB) 和默认 sRGB 颜色空间中的整数像素。如果此默认模型与该图像的 ColorModel 不匹配,则发生颜色转换。在使用此方法所返回的数据中,每个颜色分量只有 8 位精度。

public void setRGB(int x, int y,int rgb)

将此 BufferedImage 中的像素设置为指定的 RGB 值。假定该像素使用默认 RGB 颜色模型、TYPE_INT_ARGB 和默认 sRGB 颜色空间。对于具有 IndexColorModel 的图像,则选择最接近的颜色的索引。

参数:

x - 要设置的像素的 X 坐标

y - 要设置的像素的 Y 坐标

rgb - RGB 值

例子:(获取RGB值)---了解一下用一个整数表示RGB颜色的方法

import javaawtimageBufferedImage;

import javaximageioImageIO;

import javaio;

public class Test{

public static void main(String args[]) {

int[] rgb = new int[3];

File file = new File("abmp");

BufferedImage bi=null;

try{

bi = ImageIOread(file);

}catch(Exception e){

eprintStackTrace();

}

int width=bigetWidth();

int height=bigetHeight();

int minx=bigetMinX();

int miny=bigetMinY();

Systemoutprintln("width="+width+",height="+height+"");

Systemoutprintln("minx="+minx+",miniy="+miny+"");

for(int i=minx;i<width;i++){

for(int j=miny;j<height;j++){

//Systemoutprint(bigetRGB(jw, ih));

int pixel=bigetRGB(i, j);

rgb[0] = (pixel & 0xff0000 ) >> 16 ;

rgb[1] = (pixel & 0xff00 ) >> 8 ;

rgb[2] = (pixel & 0xff );

Systemoutprintln("i="+i+",j="+j+":("+rgb[0]+","+rgb[1]+","+rgb[2]+")");

}

}

}

}

要看清是RGB、还是BGR、、、、另外java中的byte再转成int时是会使用补数的(即是看到是负的)

int R = (pixel>>16) & 0xff;

int G = (pixel>>8) & 0xff;

int B = (pixel & 0xff);

BufferedImage方法提供根据rgb数组设置生成接口。初始化一个后直接调用方法即可

void setRGB(int startX, int startY, int w, int h, int[] rgbArray, int offset, int scansize)

Sets an array of integer pixels in the default RGB color model (TYPE_INT_ARGB) and default sRGB color space, into a portion of the image data

具体参看java api。

以上就是关于java 根据图片的rgb求灰度值全部的内容,包括:java 根据图片的rgb求灰度值、Java的图像算法、Java实现根据分量计算rgb值,并分离rgb分量等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/10155028.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存