2 chingxing chingxing 于 2015.06.09 16:06 提问

Android 怎样实现通过摄像头识别颜色,比如青色、黄色品红,求代码 10C

int pixel=bitmap1.getPixel(i, j);
//像素分离
int r=(pixel>>16)&0xff;
int g=(pixel>>8)&0xff;
int b=pixel&0xff;
//黄色
int y=((pixel>>16)+(pixel>>8))&0xff;
//青色
int q=((pixel>>8)+pixel)&0xff;
// Log.e("color", r+"\n"+g+"\n"+b);
//判断颜色并赋值
if(r>g&r>b&rq){
redNum++;}
else if(g>r&g>b&g greenNum++;
}
else if(b>r&b>g&b>y&b<=q){
blueNum++;
}
else if(y>r&y>g&r>b&g>b&y>q){
yellowNum++;
}
else if(q>r&q>g&b>r&g>r&q>y){
cyanNum++;
}像这样,顺便看下这里那里有错,黄色。青色显示不出来,谢谢

3个回答

qinxunhui
qinxunhui   2015.06.09 16:59

通过RGB判断颜色非常不靠谱,建议你换颜色空间。而且最好用分类器来实现。

qinxunhui
qinxunhui 回复chingxing: 你的策略无非就是设几个阈值,你找一些黄色像素来看看像素值分布,然后就把阈值定下来了。
2 年多之前 回复
chingxing
chingxing 回复StaticTemp: 如果黄色呢,那该怎样写
2 年多之前 回复
qinxunhui
qinxunhui r==255,条件太高了 我认为r>g, r>b,r>200,就是红色了。
2 年多之前 回复
chingxing
chingxing 如果前面的三基色不变,下面的改为这样呢if(r==255&&r>g&&r>b&&g<100&&b<30)redNum++;
2 年多之前 回复
qinxunhui
qinxunhui 回复chingxing: 那你直接输入黄色和青色的像素,监视yrgb等变量的值,估计你设的条件有问题,或者你程序上面的移位操作有问题。
2 年多之前 回复
chingxing
chingxing 谢谢,但要求要这样写
2 年多之前 回复
u011133213
u011133213   2015.06.09 21:48

你这样获取每个像素点的颜色值?这样应该很难判断出整个摄像头区域的颜色值吧

fcxxxer
fcxxxer   2015.06.09 22:20

分类器可以很好的实现

chingxing
chingxing 能给我代码吗,我对分类器不熟,谢谢
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片