在使用OpenCV处理图像的时候,有时我们会遇到一些损坏的JPG文件,这些文件只是末尾有少量数据损坏,能正常用图像查看软件打开,但是OpenCV检测到了文件末尾错误,就会拒绝对图像进行处理。这种情况下我们可以用 ImageMagick 来对JPG文件进行修复。
1. MacOS安装 ImageMagick
Hombrew安装一个命令即可。
brew install imagemagick
2. 修复文件
- 直接修复
mogrify -set comment 'Image rewritten with ImageMagick' *.jpg
- 将文件修复并保存为png格式
mogrify -set comment "errors fixed in meta info" -format png *.jpg
绕过OpenCV对损坏文件检测还有一种方法:
修改openCV源代码重新编译,请参照参考文献第二篇里提供的答案进行。我没有实际操作,因为作为初学者我不太倾向于修改源代码。
参考文献:
Mac环境安装imagemagick及使用imagemagick拼接图片
How can I catch corrupt JPEGs when loading an image with imread() in OpenCV? - Stack Overflow