libpng error: CgBI: unhandled critical chunk

背景

在使用OpenCV的imgcodecs类进行读取图片时,控制台打印出现了错误:libpng error: CgBI: unhandled critical chunk,代码如下所示:

    NSString *nsFilename = [[NSBundle mainBundle] pathForResource:@"loading_imgBlue@3x.png" ofType:nil];
    string filename = string([nsFilename UTF8String]);
    Mat matrix = imread(filename);

控制台报错打印:
libpng error: CgBI: unhandled critical chunk

解决办法

在TARGETS->Build Settings中搜索compress,将Compress PNG Files以及Remove Text Metadata From PNG Files禁用,如下图所示:


image.png

原因分析

Xcode的特性,在编译运行时会压缩处理PNG文件,导致OpenCV读取PNG图片时解析出错,与源文件不同

扩展

当读取图片转换为Mat对象时,我们可以用另一种方法,先将图片转换为UIImage对象, 再转换为Mat对象,这样就可以兼顾Xcode对图片的优化,如下所示:

    UIImage *image = [UIImage imageNamed:@"loading_imgBlue@3x.png"];
    Mat matrix = Mat();
    UIImageToMat(image, matrix);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容