gpt4 book ai didi

android - 在Android或OpenCV中修改图像后还原图像的对比度

转载 作者:行者123 更新时间:2023-12-02 17:41:07 25 4
gpt4 key购买 nike

我正在玩改变其对比度的图像,但是我不知道如何在先修改图像后恢复图像的对比度。

我了解到,值大于1会增加对比度,而值介于0到1之间会降低对比度。

我尝试了OpenCVColorMatrix中的Android

例如,使用OpenCV,首先我将图像的对比度加倍,如下所示:
src.convertTo(dst, -1, 2, 0);
然后将其减少一半:
src.convertTo(dst, -1, 0.5, 0);
但是在将其减小后,所得图像与将对比度加倍之前的原始图像不同。

使用Android,我正在使用此colorMatrix使对比度加倍:

ColorMatrix cm = new ColorMatrix();
cm.set(new float[] {
2, 0, 0, 0, 0,
0, 2, 0, 0, 0,
0, 0, 2, 0, 0,
0, 0, 0, 1, 0});

并将其减少一半:
ColorMatrix cm = new ColorMatrix();
cm.set(new float[] {
0.5, 0, 0, 0, 0,
0, 0.5, 0, 0, 0,
0, 0, 0.5, 0, 0,
0, 0, 0, 1, 0});

我尝试了不同的值(value)并在Internet上进行了研究,但我无法弄清楚对比度增加和减少之间的等效性。

有人知道怎么做这个吗?

最佳答案

嗨,您可以使用以下方法更改对比度

  /**
* Set contrast and brightness in bitmap
*
* @param bmp bitmap to change
* @param contrast contrast value from 1 to 10
* @param brightness brightness value from 1 to 100
* @return tuned bitmap
*/
public static Bitmap ChangeBitmapContrastBrightness(Bitmap bmp, float contrast, float brightness) {
ColorMatrix cm = new ColorMatrix(new float[]
{
contrast, 0, 0, 0, brightness,
0, contrast, 0, 0, brightness,
0, 0, contrast, 0, brightness,
0, 0, 0, 1, 0
});

Bitmap ret = Bitmap.createBitmap(bmp.getWidth(), bmp.getHeight(), bmp.getConfig());

Canvas canvas = new Canvas(ret);

Paint paint = new Paint();
paint.setColorFilter(new ColorMatrixColorFilter(cm));
canvas.drawBitmap(bmp, 0, 0, paint);

return ret;
}

关于android - 在Android或OpenCV中修改图像后还原图像的对比度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44947904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com