【问题标题】:OpenCV changing brightness and contrastOpenCV 改变亮度和对比度
【发布时间】:2014-03-06 23:59:14
【问题描述】:

我无法更改图像的亮度。我的代码是:

float alpha = 1.0f;
int beta = -20; //brightness, negative for darkening(?)
image.convertTo(image, -1, alpha, beta);

无论我为 alpha 和 beta 选择什么值,图像都会变得更亮。 convertTo 函数是否也可以使图像变暗?

看来我可能不得不使用saturate_cast,但我不确定在上面的示例中我会在哪里使用它。

【问题讨论】:

  • This doc page 展示了如何使用saturate_cast。另请注意,此示例基于像素执行 bri/con 操作。
  • 你的image是什么数据类型?

标签: c++ opencv computer-vision


【解决方案1】:

1) 我刚刚验证过。它被适当地变暗了。你确定它真的变亮了吗?你是怎么检查的?

2) 你不需要使用像 convertTo 这样的函数,因为你没有转换任何东西。更具可读性的方式是:

image = alpha*image + beta;

【讨论】:

    【解决方案2】:

    问题不在于 OpenCV 或我上面的代码。 这是 Android 项目的一部分,当我运行应用程序时,通常 ndk-build 工具会编译我的 C++ 文件。 不知何故,我的 Eclipse 配置已更改(损坏),并且我的 C++ 文件都没有被编译。 这就是为什么对我的代码进行各种编辑,对输出没有影响。在运行应用程序之前手动调用 ndk-build 后,它现在可以正常工作了。

    我的 Eclipse 配置有什么问题是另一回事。

    【讨论】:

    • 但是如果我们的图像已经是RGBA 格式,那么我们还需要处理 alpha 吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    相关资源
    最近更新 更多