//没听懂你的需求,能更清楚一些吗?
我以前的一个程序使用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]+")");
}
}
}
}
首先,要有一“黑体轨迹等温线的色品坐标”表。此表“色度学”书中有。然后,运用内插法和三角形垂足法计算色温。
在“黑体轨迹等温线的色品坐标”表中,每一行(每一色温)有“黑体轨迹上”x、y,设为x1、y1,“黑体轨迹外” x、y,设为x2、y2。用仪器测得色度坐标x、y设为x0、y0。
RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。
扩展资料:
如果一直找不到D1D2小于0,那是测得坐标在∞(无穷大)等温线左下方,那片区域是没有(相关)色温的。
按理说,离开黑体轨迹一定距离,就没有(相关)色温概念了,可是现在给搞混淆了。
或者,在附图中,把你坐标点上去,看左右两条等温线的色温,估算出。
参考资料来源:百度百科 ——色温
参考资料来源:百度百科 ——色坐标
把十六进制的数前面加0补成长度为6的数,然后前两位化成十进制数代表红色,中间两位化成十进制数代表绿色,最后两位化成十进制数代表蓝色。如&FFFF,先变成00FFFF,于是等于RGB(0,255,255)
网上还有专门的颜色值运算器,要是嫌计算麻烦,就下一个用吧~~~
以上就是关于Java的图像算法全部的内容,包括:Java的图像算法、怎么通过RGB 三色值 计算色坐标和色温、详细请教:关于十进制RGB颜色值转换十六进制颜色值的算法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)