解决libpng中iCCP cHRM chunk与sRGB不匹配问题的指南


libpng warning: iCCP: cHRM chunk does not match sRGB警告解决指南

一、问题溯源

当使用 OpenCV 读取 PNG 图片时,出现了以下警告:

libpng warning: iCCP: known incorrect sRGB profile
libpng warning: iCCP: cHRM chunk does not match sRGB

这些警告是由于 PNG 文件中包含的 sRGB 配置文件与标准不匹配所引起的:libpng 版本 1.6 及以后的版本对 ICC 配置文件的检查更加严格,因此会显示这些警告。

二、解决方法

2.1 忽略警告:
  • 这些警告并不影响图片的读取和处理,因此可以选择忽略它们。
  • 2.2 使用 ImageMagick 移除有问题的配置文件:
  • ImageMagick安装
  • 安装 ImageMagick

    点击网址,然后找到Windows的安装包下载安装即可,不需要复杂步骤;网上有些教程七里巴拉的还要修改注册表真是麻烦透了,对小白毫无好处

    如果实在不懂,参考别人的博客:windows系统下载与安装imageMagick_imagemagick下载教程-CSDN博客

    然后我注意到网上有人说这个网站进不去,我不知道是否需要魔法,如果真进不去请你打开魔法(科学上网)试试

  • 测试

    windows 控制台下运行下述命令

    magick -version
    

    如果有类似下面的输出则表示安装成功了,否则请检查安装,自行上网查找相关解决方案

    Version: ImageMagick 7.1.1-34 Q16-HDRI x64 b0b7b17:20240623 https://imagemagick.org
    Copyright: (C) 1999 ImageMagick Studio LLC
    License: https://imagemagick.org/script/license.php
    Features: Channel-masks(64-bit) Cipher DPC HDRI Modules OpenCL OpenMP(2.0)
    Delegates (built-in): bzlib cairo flif freetype gslib heic jng jp2 jpeg jxl lcms lqr lzma openexr pangocairo png ps raqm raw rsvg tiff webp xml zip zlib
    Compiler: Visual Studio 2022 (194033811)
    
  • 单个文件处理

    直接从图片所在目录打开Windows 控制台,运行如下命令,完成转换,转换完就不会有读取时的那种警告了

    magick input.png -strip output.png
    
  • 批量文件处理

    如果有大量 PNG 文件,可以编写Windows的批处理(.bat)脚本批量处理,具体的说,代码框架如下:

    @echo off
    
    :: 设置输入和输出目录
    set INPUT_DIR=E:\Datasets\ExDark\images
    set OUTPUT_DIR=E:\Datasets\ExDark\ProcessedImages
    
    :: 检查输出目录是否存在,如果不存在则创建
    if not exist "%OUTPUT_DIR%" (
        mkdir "%OUTPUT_DIR%"
    )
    
    :: 切换到输入目录,
    cd /d "%INPUT_DIR%"
    
    
    :: 遍历所有 PNG 文件,并处理它们
    for %%i in (*.png) do (
        magick "%%i" -strip "%OUTPUT_DIR%\%%i"
        echo Processed "%%i"
    )
    
    echo Finished
    
  • 其中/dcd命令的一个参数,用于更改驱动器,并切换到指定的目录。如果不使用/dcd命令就只能在一个硬盘分区中进行目录切换。
  • 读者如果想用的话只需要3步:

  • 将上述代码拷贝,粘贴到一个.bat文件(用记事本VS Code打开皆可)里

  • 修改INPUT_DIR,其为你原来有问题分的png图片所在的文件夹路径

  • 修改OUTPUT_DIR,这是处理完的图片要存放的目录

  • 作者:Midsummer-逐梦

    物联沃分享整理
    物联沃-IOTWORD物联网 » 解决libpng中iCCP cHRM chunk与sRGB不匹配问题的指南

    发表回复