我想从相机拍摄的照片中将除黑色以外的所有颜色更改为白色。但是,物体的黑色随着光线和白平衡而变化,它不能被检测为黑色然后也变为白色
public void subColor(Mat src, String timeStamp, File mediaStorageDir) throws FileNotFoundException {
Bitmap output = Bitmap.createBitmap(src.width(), src.height(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(src, output);
for (int x = 0; x < output.getWidth(); x++)
for (int y = 0; y < output.getHeight(); y++) {
int pixel = output.getPixel(x, y);
if (pixel != Color.BLACK)
output.setPixel(x, y, Color.WHITE);
}
String mImageName= timeStamp + "_EDIT" + ".jpg";
File mediaFile = new File(mediaStorageDir.getPath() + File.separator + mImageName);
FileOutputStream fos = new FileOutputStream(mediaFile);
output.compress(Bitmap.CompressFormat.JPEG, 100, fos);
}
我想知道像素的颜色是否可以与黑色而不是Color.BLACK进行比较。
谢谢。
答案 0 :(得分:1)
希望以下步骤可以帮助您: 1.从像素计算RGB:
int r = (pixel >> 16) & 0xff;
int g = (pixel >> 8) & 0xff;
int b = (pixel >> 0) & 0xff;
2.转换RGB颜色值以通过以下公式计算亮度
Y = 0.2126*r + 0.7152*g + 0.0722*b
检查是否是黑色阴影或不喜欢:
if(Y <128){ //可以作为黑色的阴影 }其他{ //可以作为白色的阴影 }
答案 1 :(得分:0)
布莱克没有范围。黑色只是一个。如果你想看看某些东西是否比其他颜色更暗,你可以这样做:
if(Color.red(myColor) < 20 &&
Color.blue(myColor) < 20 &&
Color.green(myColor) < 20){
...
}
您希望与之比较的颜色是#202020。
如果您想确保颜色为灰色,请添加Color.red(myColor) == Color.blue(myColor) && Color.green(myColor) == Color.blue(myColor)