Colors 当我在OpenCV中加载图像时,它总是比原始图像暗。为什么?

Colors 当我在OpenCV中加载图像时,它总是比原始图像暗。为什么?,colors,opencv,brightness,Colors,Opencv,Brightness,因此,我加载了一个color.png文件,该文件是使用cvLoadImage在iphone上拍摄的。加载后,当我立即在X11终端中显示它时,图像肯定比原始png文件暗 我当前使用此选项加载图像: IplImage*img3=cvLoadImage(“bright.png”,1) 对于第二个参数,我尝试了以下所有方法: CV\u加载\u图像\u未更改 CV\u加载\u图像\u灰度 CV\u加载\u图像\u颜色 CV\u加载\u图像\u任意深度 CV\u加载\u图像\u任意颜色 但这些都不起作用。灰

因此,我加载了一个color.png文件,该文件是使用cvLoadImage在iphone上拍摄的。加载后,当我立即在X11终端中显示它时,图像肯定比原始png文件暗

我当前使用此选项加载图像: IplImage*img3=cvLoadImage(“bright.png”,1)

对于第二个参数,我尝试了以下所有方法:

CV\u加载\u图像\u未更改

CV\u加载\u图像\u灰度

CV\u加载\u图像\u颜色

CV\u加载\u图像\u任意深度

CV\u加载\u图像\u任意颜色

但这些都不起作用。灰度确实使图像变成了灰度。但正如所建议的,即使使用CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR尽可能真实地加载图像,也会导致在终端中显示较暗的图像

有人对如何正确显示原始图像有什么想法吗


先谢谢你

只有在OpenCV中加载时才会发生?使用任何其他查看器打开都不会显示差异

如果没有一些测试,我无法确认这一点,但我相信iPhone的显示gamma是1.8(来源:)。您的X11显示器可能已调整为2.2(与世界其他地区一样)

如果这一理论成立,那么X11上的图像将比iPhone上的图像更暗。您可以更改显示器校准或进行一些图像处理以解释差异

编辑:

我相信OpenCV确实没有应用伽马校正。我在这里提到这一点:

您可能希望自己实现它或使用ImageMagick“更正”它。本页指导您如何执行此操作:


我通常加载带有以下内容的图像:

cvLoadImage("file.png", CV_LOAD_IMAGE_UNCHANGED);
为了检测OpenCV是否真的干扰了图像数据,您可以做一个有趣的测试,就是使用cvCreateImage()创建另一个图像,然后将数据复制到这个新创建的图像中,并使用cvLoadImage()将其保存到另一个文件中


也许,这只是一个显示错误。当然,我建议您更新到OpenCV的最新版本。

是的,OpenCV不应用Gamma校正


// from: http://gegl.org/
// value: 0.0-1.0
static inline qreal
linear_to_gamma_2_2 (qreal value){
  if (value > 0.0030402477)
    return 1.055 * pow (value, (1.0/2.4)) - 0.055;
  return 12.92 * value;
}
// from: http://gegl.org/
static inline qreal
gamma_2_2_to_linear (qreal value){
  if (value > 0.03928)
    return pow ((value + 0.055) / 1.055, 2.4);
  return value / 12.92;
}

当我在同一台mac笔记本电脑上的Preview和Adobe Photoshop中打开它时,图像显示与我的iphone上显示的一样。只有通过X11端子,它才会显得更暗。我的问题是,当我去检索图像的像素RGB值时,返回的是较暗的图像RGB值,而不是原始图像的RGB值(我使用mac上的颜色实用工具对此进行了验证)。你知道如何获得原始(较亮)图像的像素RGB值吗?非常感谢您的回复。您希望对OpenCV图像应用gamma校正。您可以使用ImageMagick或自己实现它。我将用一些参考资料编辑我的文章。你是否尝试加载一个完全白色的图像并检查像素值?