You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用opencv-contrib-python触发Assertion failed错误的解决求助

OpenCV LBPHRecognizer读取训练文件报错解决方案

问题描述

使用最新版opencv-contrib-python,通过cv2.face.LBPHFaceRecognizer_create()创建的recognizer执行recognizer.read("face-trainer.yml")时触发如下错误:

Traceback (most recent call last):
  File "/home/sxvxge/Desktop/My Files/Code Projects/Python/Face recognition/FaceRecognitionRevamped.py", line 24, in <module>
    recognizer.read("face-trainer.yml")
cv2.error: OpenCV(4.6.0) /io/opencv/modules/core/src/persistence.cpp:2145: error: (-215:Assertion failed) isMap() in function 'operator[]'

已知条件:

  • 无法降级到OpenCV 2.4
  • 无C++编译环境重新编译opencv-contrib-python
  • 仅安装opencv-contrib-python(避免版本冲突)
  • face-trainer.yml与脚本路径一致

解决方法

1. 重新生成适配当前OpenCV版本的训练文件

该报错大多是因为face-trainer.yml由旧版OpenCV生成,和4.x版本的LBPHFaceRecognizer不兼容。直接用当前版本的OpenCV重新训练:

  • 确保训练代码使用cv2.face.LBPHFaceRecognizer_create()创建识别器
  • 运行训练脚本生成新的face-trainer.yml,替换原文件

2. 检查训练文件完整性

打开face-trainer.yml确认:

  • 无乱码、内容缺失或YAML语法错误
  • 若文件损坏,重新生成是唯一可行方案

3. 使用绝对路径读取文件

避免路径解析问题,用绝对路径指定文件位置:

import os
trainer_path = os.path.abspath("face-trainer.yml")
recognizer.read(trainer_path)

4. 安装稳定版opencv-contrib-python

确保使用的是稳定发行版,而非开发版,可重新安装指定版本:

pip uninstall opencv-contrib-python
pip install opencv-contrib-python==4.8.0.76  # 可替换为最新稳定版

内容的提问来源于stack exchange,提问作者Sxvxgeness

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 16:30:55