运行OpenCV人脸检测代码时遇AttributeError: cv2无cv.CV_HAAR_DO_CANNY_PRUNING属性
问题解决:OpenCV人脸检测AttributeError
错误原因
这段代码基于OpenCV 2.x编写,但你安装的是OpenCV 3.x及更高版本。新版本重构了API:
- 移除了
cv2.cv子模块 - HAAR级联相关常量前缀从
CV_HAAR_改为CASCADE_,且直接归属cv2主模块
修复步骤
- 替换常量命名:把代码中所有
cv2.cv.CV_HAAR_*替换为cv2.CASCADE_* - 修正人脸检测结果判断:新版本
detectMultiScale返回numpy数组,空数组不等于(),需用len(fface) > 0判断
修改后的代码
if not faceFound: if lastface == 0 or lastface == 1: # 连续读取5帧解决摄像头延迟问题 for _ in range(5): aframe = webcam.read()[1] # 使用新版本OpenCV的常量 fface = frontalface.detectMultiScale( aframe, scaleFactor=1.3, minNeighbors=4, flags=cv2.CASCADE_DO_CANNY_PRUNING + cv2.CASCADE_FIND_BIGGEST_OBJECT + cv2.CASCADE_DO_ROUGH_SEARCH, minSize=(60, 60) ) if len(fface) > 0: lastface = 1 for f in fface: faceFound = True face = f
备选方案(不推荐)
如果必须兼容旧代码,可以安装OpenCV 2.x版本:
pip install opencv-python==2.4.13.7
内容的提问来源于stack exchange,提问作者vienda 34
相关产品推荐
相关产品推荐

