Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android上的颜色校正_Android_Image Processing_Colors_Bitmap - Fatal编程技术网

android上的颜色校正

android上的颜色校正,android,image-processing,colors,bitmap,Android,Image Processing,Colors,Bitmap,我是android编程新手。现在我正在用java为android平台做一个颜色校正程序 在程序中,我应该能够选择位图上的一个点,并告诉程序它实际上是白色,程序将重新调整该位图的所有像素,以便该位图的所有颜色都是正确的 谁能告诉我怎么做?我现在已经能够从位图中检索点并计算其RGB,但我不知道如何继续。请给我看一些我能读懂的例子或文章 非常感谢你宝贵的时间。希望很快收到你的来信 结果照片: 我的照片正在更新,尽管质量/噪音/颜色不同,但到处都有奇怪的颜色。有人知道我该怎么做才能把它拿走吗?或者更

我是android编程新手。现在我正在用java为android平台做一个颜色校正程序

在程序中,我应该能够选择位图上的一个点,并告诉程序它实际上是白色,程序将重新调整该位图的所有像素,以便该位图的所有颜色都是正确的

谁能告诉我怎么做?我现在已经能够从位图中检索点并计算其RGB,但我不知道如何继续。请给我看一些我能读懂的例子或文章

非常感谢你宝贵的时间。希望很快收到你的来信


结果照片:

我的照片正在更新,尽管质量/噪音/颜色不同,但到处都有奇怪的颜色。有人知道我该怎么做才能把它拿走吗?或者更好地改进我使用的方法?代码如下:

输入是要编辑的位图,inColor是要编辑的照片中鼻子的颜色,reqcolor是示例/最佳照片中我鼻子的颜色

    public Bitmap shiftRGB(Bitmap input, int inColor, int reqColor){

        int deltaR = Color.red(reqColor) - Color.red(inColor);
        int deltaG = Color.green(reqColor) - Color.green(inColor);
        int deltaB = Color.blue(reqColor) - Color.blue(inColor);

        //--how many pixels ? --
        int w = input.getWidth();
        int h = input.getHeight();


        //-- change em all! --
        for (int i = 0 ; i < w; i++){
            for (int  j = 0 ; j < h ; j++ ){
                int pixColor = input.getPixel(i,j);

                //-- colors now ? --
                int inR = Color.red(pixColor);
                int inG = Color.green(pixColor);
                int inB = Color.blue(pixColor);

                if(inR > 255){ inR = 255;}
                if(inG > 255){ inG = 255;}
                if(inB > 255){ inB = 255;}
                if(inR < 0){ inR = 0;}
                if(inG < 0){ inG = 0;}
                if(inB < 0){ inB = 0;}

                //-- colors then --
                input.setPixel(i,j,Color.argb(255,inR + deltaR,inG + deltaG,inB           + deltaB));
            }
        }

        return input;
 }
public位图shiftRGB(位图输入,int-inColor,int-reqColor){
int deltaR=Color.red(reqColor)-Color.red(inColor);
int deltaG=Color.green(reqColor)-Color.green(inColor);
int deltaB=Color.blue(reqColor)-Color.blue(inColor);
//--有多少像素--
int w=input.getWidth();
inth=input.getHeight();
//--改变他们--
对于(int i=0;i255){inR=255;}
如果(inG>255){inG=255;}
如果(inB>255){inB=255;}
如果(inR<0){inR=0;}
如果(inG<0){inG=0;}
如果(inB<0){inB=0;}
//--那么颜色呢--
input.setPixel(i,j,Color.argb(255,inR+deltaR,inG+deltaG,inB+deltaB));
}
}
返回输入;
}
非常感谢你对我的帮助!我无法表达我的感激之情,只能提前说一声谢谢

阅读一些算法。看看你是否能实现一些。还要注意的是,android没有提供awt.graphics/buffereImage API,大多数java教程都使用它

Android为这种用途提供了

操作像素的基本粗略方法:

public Bitmap shiftRGB(Bitmap input, int inColor, int reqColor){

    //--how much change ? --
    int deltaR = Color.red(reqColor) - Color.red(inColor);
    int deltaG = Color.green(reqColor) - Color.green(inColor);
    int deltaB = Color.blue(reqColor) - Color.blue(inColor);

    //--how many pixels ? --
    int w = input.getWidth();
    int h = input.getHeight();

    //-- change em all! --
    for (int i = 0 ; i < w; i++){
        for (int  j = 0 ; j < h ; j++ ){
            int pixColor = input.getPixel(i,j);

            //-- colors now ? --
            int inR = Color.red(pixColor);
            int inG = Color.green(pixColor);
            int inB = Color.blue(pixColor);

            //-- colors then --
            input.setPixel(i,j,Color.argb(255,inR + deltaR,inG + deltaG,inB + deltaB));

        }
    }

    //-- all done--
    return input;
}
public位图shiftRGB(位图输入,int-inColor,int-reqColor){
//--零钱多少--
int deltaR=Color.red(reqColor)-Color.red(inColor);
int deltaG=Color.green(reqColor)-Color.green(inColor);
int deltaB=Color.blue(reqColor)-Color.blue(inColor);
//--有多少像素--
int w=input.getWidth();
inth=input.getHeight();
//--改变他们--
对于(int i=0;i
您是否正在进行某种亮度校正?这意味着你选择了一个灰色的像素,并告诉它应该是白色的-在这种情况下,所有的像素都应该以一定的恒定值变亮,以使这个选定的像素变白?是的!我想我也可以这样做,因为我需要在不丢失太多信息的情况下,将曝光不足的图片中的颜色改回原样。我认为这可以奏效,但有人知道我如何操作图像的RGB吗?将一个矩阵乘以整张图片。不确定我的位图是否为RGB565格式也很重要。真的非常感谢那些帮助我的人!:)@user1950532更新的答案,希望能让你开始。非常感谢!对我来说似乎是一个很好的开始。我会尝试一下,然后回来更新我的结果。再次感谢:)我已经尝试了您提供的方法,但添加了一些内容,并将我的代码和问题发布在下面:(