小弟最近忙一个任务遇到一个问题,就是在获取了图上某点的RGB之后如何判断其颜色是什么?主要是判断所选点是黄绿红里的哪种。我尝试过把RGB转换为IHS来判断色彩,可是不知道是不是算法有问题,红色的色彩范围玉其他二者有交集。这让我蛋疼无比。以下是我的方法求鉴定private void gethis(int xxx, int yyy) {
int c = bitmap.getPixel(xxx, yyy); // extract RGB components from color pixel
int datar = (c & 0xff0000) >> 16;
int datag = (c & 0x00ff00) >> 8;
int datab = (c & 0x0000ff);
double r = datar * 1.0/ 255;
double g = datag * 1.0 / 255;
double b = datab * 1.0/ 255;

double min=Math.min(r, Math.min(g, b));
double h=0.0,i=0.0,s=0.0; if (min==r) {
h=((b-r)/(3*(g+b-2*r)))+1/3;
}else if (min==g) {
h=((r-g)/(3*(r+b-2*g)))+2/3;
}else if (min==b) {
h=(g-b)/(3*(g+r-2*b));
} i=(r+g+b)/3;
s=1-min/i;  RgbDao rgbDao = new RgbDao(getBaseContext());
 Rgb rgb = new Rgb(xxx + "", yyy + "", h + "", i + "", s + "", r + "",
 g
 + "", +b + "");
//  rgbDao.addgreen(rgb);
 rgbDao.addred(rgb); Log.i("xixi", "x:" + xxx + "y" + yyy + "\n" + "R" + r + "G" + g + "B"
+ b);
 Log.i("xixi", h + "h" + i + "v" + s+ "s"); }bmp,ihs,颜色判断