Android - 改变照片像素的颜色

标签 android image-processing

我想将相机拍摄的照片中除黑色以外的所有颜色更改为白色。但是,物体的黑色随着光线和白平衡的变化而变化,无法检测为黑色然后也变成白色

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 的范围进行比较。

谢谢。

最佳答案

希望以下步骤对您有所帮助: 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
  1. 检查它是否是黑色阴影:

    如果( Y < 128){ //可以作为黑色阴影 }别的{ //可以作为白色阴影 }

关于Android - 改变照片像素的颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36328803/

相关文章:

matlab - 转换RGB 2 HSV时出现 block 伪影

java - 访问 Android UI Automator 测试的资源

java - 如何找到光标的位置以在编辑文本中从该位置选择文本?

objective-c - 如何在 iOS 上快速估计调整大小的图像的文件大小?

python - 检测图像中的光晕

matlab - 如何使用 MATLAB 求圆内包含的任意形状的面积

c# - 在 C# 中确定图像的颜色十六进制值

android - 如何向android studio 添加外部依赖项(jar 文件)?

android - 为 SDK 24 构建安全吗?

Android 从 SD 卡读取文本文件超过 5 mb 错误