Python+OpenCV加载HaarCascade分类器遇错误,求问题原因及解决
HaarCascade分类器加载失败问题排查
问题代码
import cv2 import os haar_model_local = os.path.join(os.getcwd(), "haarcascade_frontalface_default.xml") print(haar_model_local) print(os.path.exists(haar_model_local)) print(os.path.isfile(haar_model_local)) cascade = cv2.CascadeClassifier(haar_model_local)
运行错误信息
cv2.error: OpenCV(4.7.0) D:\bld\libopencv_1675730129252\work\modules\core\src\persistence.cpp:692: error: (-5:Bad argument) Input file is invalid in function 'cv::FileStorage::Impl::open' The above exception was the direct cause of the following exception: Traceback (most recent call last): File "D:\SoftwareDev\Python_Projekte\gesichtserkennungstest\Gesichtserkennung_Test.py", line 13, in <module> cascade = cv2.CascadeClassifier(haar_model_local) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ SystemError: <class 'cv2.CascadeClassifier'> returned a result with an exception set
运行环境
conda list -f opencv --json [ { "base_url": "https://conda.anaconda.org/conda-forge", "build_number": 1, "build_string": "py311h1ea47a8_1", "channel": "conda-forge", "dist_name": "opencv-4.7.0-py311h1ea47a8_1", "name": "opencv", "platform": "win-64", "version": "4.7.0" } ]
Windows10 + Anaconda环境
排查与解决方法
- XML文件损坏或不完整
直接从Anaconda环境的OpenCV数据目录复制分类器文件,路径一般是你的conda环境根目录\Lib\site-packages\cv2\data\haarcascade_frontalface_default.xml,复制到项目目录后再测试,避免下载过程中文件损坏。 - 验证文件有效性
手动打开XML文件,确认内容是完整的Haar特征描述代码,不是空文件或下载错误的HTML内容。 - 检查OpenCV数据完整性
如果conda安装的opencv缺少data目录,可通过conda安装opencv-contrib-python包,它包含完整的预训练分类器集合:conda install -c conda-forge opencv-contrib-python - 直接使用绝对路径测试
替换代码中的路径为文件的完整绝对路径,比如:
排除路径拼接可能出现的隐性问题。cascade = cv2.CascadeClassifier("D:\\SoftwareDev\\Python_Projekte\\gesichtserkennungstest\\haarcascade_frontalface_default.xml")
内容的提问来源于stack exchange,提问作者MKay
相关产品推荐
相关产品推荐

