使用Python27(IDLE)提取人脸特征点时遇dlib反序列化版本错误
解决dlib shape_predictor版本不匹配的RuntimeError
这个报错我之前帮不少开发者解决过,本质是dlib版本和你使用的shape_predictor人脸特征点模型文件不兼容——dlib的特征点模型是和特定版本的库绑定的,不同版本的dlib无法读取其他版本生成的模型文件。结合你的情况,给你几个针对性的解决步骤:
先确认模型文件是否完成解压
你下载的shape_predictor_68_face_landmarks.dat.bz2是压缩包格式,必须先解压出.dat后缀的模型文件才能被dlib加载。如果直接用压缩包路径去初始化shape_predictor,不仅会触发错误,还可能被误判为版本不匹配问题。匹配dlib版本与模型版本
你当前使用的是dlib 19.10,需要找到对应这个版本的特征点模型。你可以在dlib的版本归档中获取适配19.10的68点人脸模型;当然更推荐的方式是升级你的dlib到较新的稳定版本,再使用官网提供的最新模型文件,这样兼容性更好,还能获得库的功能修复和性能优化。检查模型文件路径是否正确
确保代码中传入shape_predictor的是解压后.dat文件的正确路径,Python中路径需要注意转义符,比如你的模型在C盘根目录的话,路径应该写成:PREDICTOR_PATH = "C:\\shape_predictor_68_face_landmarks.dat"或者用原始字符串格式避免转义:
PREDICTOR_PATH = r"C:\shape_predictor_68_face_landmarks.dat"
按照这几步操作后,应该就能解决这个版本不匹配的RuntimeError了。
内容的提问来源于stack exchange,提问作者the pro-gramer
相关产品推荐
相关产品推荐

