Dlib在Linux上无法加载jpg图片

在Linux环境下,使用dlib进行人脸识别时遇到图片加载错误,具体表现为`jpeg_loader: error while loading image`。问题源于dlib与系统中libjpeg.so版本不匹配。通过编译libjpeg源码并替换dlib的外部库文件,解决了依赖库不一致的问题,成功加载图片。
摘要由CSDN通过智能技术生成

记录一下Dlib在Linux上无法加载jpg图片的问题

问题描述

dlib版本:19.21
用opencv+dlib做人脸识别,打算做一个跨平台的人脸识别库,在windows下程序已经可以正常跑起来了,可是在linux上编译生成动态库之后调用接口产生如下错误

terminate called after throwing an instance of ‘dlib::image_load_error’
what(): jpeg_loader: error while loading image: JPEG parameter struct mismatch: library thinks size is 656, caller expects 624
Aborted (core dumped)

本来以为dlib用的静态编译的方式应该在windows上能跑linux上能编译也能跑才对,结果出现了这样的问题

解决过程

产生这个问题证明dlib的jpeg支持是有效的(注意linux下cmake编译dlib库时添加宏 -DDLIB_JPEG_SUPPORT
-DDLIB_PNG_SUPPORT,以及其他可以加快计算速度的宏,但是需要某些硬件支持),而且程序运行的时候是加载了动态库的,本以为dlib应该全部静态编译进了人脸识别动态库
根据网上查找的资料显示应该是依赖libjpeg.so这个库
所以在linux上使用命令

whereis libjpeg

发现我用的linux上有三个版本的动态库libjpeg.so libjpeg.so.8 libjpeg.so.8.2.2
这里使用暴力的方式直接把它们的名字都改了再去调用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值