如何编写通用文件路径?人脸识别程序dlib路径配置问题求助
路径设置问题分析与解决
你的问题出在base_path定位和路径拼接逻辑错误:
- 当前
base_path = os.path.dirname(os.path.abspath(__file__))获取的是脚本所在的FaceRec目录路径 - 而
myvenv与programs是Projects根目录下的同级文件夹,从FaceRec往下拼接myvenv路径,会指向不存在的FaceRec/myvenv/...,程序找不到文件时就会默认从当前运行目录(FaceRec)搜索,导致你遇到的现象
解决方案
核心是先定位到所有文件的共同根目录Projects,再基于它拼接目标文件路径:
- 获取Projects根目录
根据你的目录结构(Projects/programs/MyProg/FaceRec),从FaceRec往上回溯3级即可到达Projects:
import os import dlib # 获取当前脚本所在目录(FaceRec) current_script_dir = os.path.abspath(os.path.dirname(__file__)) # 回溯到Projects根目录 projects_root = os.path.abspath(os.path.join(current_script_dir, '../../..'))
- 拼接正确的dlib文件路径
基于projects_root直接指向你存放文件的myvenv/dlib/NeededFile目录:
# 拼接人脸特征点预测器路径 predictor_path = os.path.join(projects_root, 'myvenv', 'dlib', 'NeededFile', 'shape_predictor_68_face_landmarks.dat') predictor = dlib.shape_predictor(predictor_path) # 拼接人脸识别模型路径 face_rec_model_path = os.path.join(projects_root, 'myvenv', 'dlib', 'NeededFile', 'dlib_face_recognition_resnet_model_v1.dat') face_rec_model = dlib.face_recognition_model_v1(face_rec_model_path)
调试建议
在代码中添加打印语句,确认生成的路径是否符合预期:
print("Projects根目录:", projects_root) print("预测器路径:", predictor_path)
如果路径不对,调整os.path.join中的回溯层级(即../的数量)即可。
内容的提问来源于stack exchange,提问作者Azizbek Raxmatulloyev
相关产品推荐
相关产品推荐

