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
- 其中
/d
是cd
命令的一个参数,用于更改驱动器,并切换到指定的目录。如果不使用/d
,cd
命令就只能在一个硬盘分区中进行目录切换。
读者如果想用的话只需要3步:
-
将上述代码拷贝,粘贴到一个
.bat
文件(用记事本
或VS Code
打开皆可)里 -
修改
INPUT_DIR
,其为你原来有问题分的png
图片所在的文件夹路径 -
修改
OUTPUT_DIR
,这是处理完的图片要存放的目录
- 其中