开源人脸识别项目,新增功能,实现把陌生的人脸存储在本地的固定目录下。
pytorch、win10、CUDA11.4
问题描述、
存储陌生人脸的过程中,cv2.imwrite不存储图片,无报错信息。
相关代码如下:
for k in range(len(faces)):
# -------------------------------保存未注册人脸和已注册人脸并更新人脸库------------------------
if results[k].item() == -1:
if len(path_file_number) != 0:
person_name = 'unknown_{}'.format(len(path_file_number) + count)
else:
person_name = 'unknown_{}'.format(count)
save_path = self.save_path / person_name
if not save_path.exists():
save_path.mkdir()
# cv2.imwrite(f'{save_path}/{person_name}_{datetime.datetime.now()}.jpg', faces[k].cpu().numpy()) #
cv2.imwrite(
faces[k].cpu().numpy()) # 保存人脸
count += 1
self.targets, self.names = update_facebank(self.conf, self.recognizer.model, self.detector, tta=self.tta) f"{save_path}/{person_name}_{datetime.datetime.strftime(time, '%Y-%m-%d %H:%M:%S')}.jpg",
else:
person_name = self.names[results[k] + 1]
# save_path = Path(os.path.dirname(os.path.realpath(__file__)), 'data/result')
# save_path = save_path / person_name
save_path = self.save_path / person_name #
if not save_path.exists():
save_path.mkdir()
cv2.imwrite(
f"{save_path}/{person_name}_{datetime.datetime.strftime(time, '%Y-%m-%d %H:%M:%S')}.jpg",
faces[k].cpu().numpy()) # 保存人脸
原因分析:
cv2.imwrite() 方法的问题,路径写法在linux系统下可以正常运行,windows下路径无法正常识别。
解决方案:
把代码中的相对地址,替换成成绝对地址:
f"{save_path}/{person_name}_{datetime.datetime.strftime(time, '%Y-%m-%d %H:%M:%S')}.jpg"filename = 'unknow_1.jpg' file_path = os.path.join('InsightFace/models/data/facebank/',filename) cv2.imwrite(file_path,faces[0].cpu().numpy()) # 保存人脸



