Dlib在Linux上无法加载jpg图片

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

记录一下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
这里使用暴力的方式直接把它们的名字都改了再去调用

03-10
### 关于 Dlib 库的使用教程和文档 #### 项目概述 Dlib 是一个用 C++ 编写的工具库,包含了多种机器学习算法和其他实用功能,旨在解决复杂的现实世界问题。此库不仅限于机器学习,在图像处理、数值计算等领域也有广泛应用[^2]。 #### 文档资源位置 为了更高效地利用 Dlib 进行开发工作,官方提供了详尽的帮助资料。主要项目文档与 API 参考可以在官方网站 dlib.net 获取[^5]。这里不仅有详细的函数说明,还有丰富的实例演示,有助于开发者理解并掌握各个模块的具体应用方式。 #### Python 接口支持 值得注意的是,除了原生 C++ 支持外,Dlib 同样为 Python 用户准备了便捷接口。通过 pip 命令可以轻松完成安装过程,这使得更多编程爱好者能够快速上手尝试这一强大工具集带来的便利之处[^4]。 #### 安装指南 针对不同环境下的部署需求,Dlib 提供了灵活多样的安装方案。无论是 Windows 平台还是 Linux 发行版,都能找到对应的指导手册来辅助顺利完成整个设置流程。 #### 示例程序解析 为了让初学者更快入门,Dlib 配备了大量的示例代码片段。这些例子覆盖了从基础操作到高级特性的方方面面,配合清晰易懂的文字解释,即使是初次接触此类技术的新手也能逐步建立起扎实的知识体系[^1]。 ```python import dlib detector = dlib.get_frontal_face_detector() win = dlib.image_window() for f in glob.glob(os.path.join(folder, "*.jpg")): img = dlib.load_rgb_image(f) win.clear_overlay() win.set_image(img) dets = detector(img, 1) print("Number of faces detected: {}".format(len(dets))) win.add_overlay(dets) dlib.hit_enter_to_continue() ``` 上述脚本展示了如何运用 Dlib 实现人脸检测功能的一个简单案例。这段代码首先加载了一张图片文件,接着调用了预训练好的模型来进行面部识别,并最终将结果显示出来[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值