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
,這是處理完的圖片要存放的目錄
- 其中