首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Android或OpenCV中修改图像后恢复图像对比度

在Android或OpenCV中修改图像后恢复图像对比度
EN

Stack Overflow用户
提问于 2017-07-06 19:42:32
回答 1查看 432关注 0票数 0

我正在玩改变图像对比度的游戏,但我不知道如何在第一次修改图像后恢复图像的对比度。

我的理解是,当数值大于1时,我会增加对比度,而当数值在0到1之间时,我会降低对比度。

我尝试使用OpenCVAndroid中的ColorMatrix

例如,使用OpenCV,首先我将图像的对比度加倍,如下所示:

src.convertTo(dst, -1, 2, 0);

然后我把它减半:

src.convertTo(dst, -1, 0.5, 0);

但在减少它之后,结果图像与我在对比度加倍之前的原始图像不同。

在使用Android时,我使用这个colorMatrix来使对比度加倍:

代码语言:javascript
复制
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});

这样就可以将其减半:

代码语言:javascript
复制
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});

我在互联网上尝试了不同的价值观和研究,但我找不出增加和减少对比度之间的等价物。

有人知道怎么做吗?

EN

回答 1

Stack Overflow用户

发布于 2017-07-06 19:50:42

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

代码语言:javascript
复制
  /**
     * 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;
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44947904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档