MAC SystemError:‘class ‘cv2.CascadeClassifier’‘ returned a result with an error set

利用opencv的CascadeClassifier简单实现人脸识别

环境:MAC+anaconda+opencv3.4

问题:SystemError:‘class ‘cv2.CascadeClassifier’’ returned a result with an error set

在学习opencv-python时,利用笔记本摄像头实现一个视频流人脸识别小程序,其中在调用opencv的haarcascade_frontalface_default.xml时程序报错SystemError,详细信息如下:

import cv2
import numpy as np

img = cv2.imread('photo_noisy.jpg')
print(img.shape)

face_detect = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

face_zone = face_detect.detectMultiScale(img,scaleFactor=1.1,minNeighbors=5)
print("识别人脸信息:",face_zone)

for x,y,w,h in face_zone:
    #绘制矩形人脸区域
    cv2.rectangle(img,(x,y),(x+w,y+h),color=[0,0,255],thickness=2)
	#绘制圆形人脸区域
    cv2.circle(img,(x+w//2,y+h//2),radius=w//2,color=[0,255,0],thickness=2)

cv2.namedWindow("Easmount-CSDN",0)
cv2.imshow("result",img)

cv2.waitKey(0)

报错信息如下:
在这里插入图片描述在网页:https://github.com/ihongxx/opencv/tree/master/datamaster/data/haarcascades/haarcascade_frontalface_default.xml中
我们将“haarcascade_frontalface_default.xml”文件已经下载至本地并放在当前的包中。但是出现这个错误。原因是:应该把opencv的资源整合在一起,单独下载xml或者某几个文件,可能会缺少关联文件,而出现错误。所有要把opencv的资源包放在一起。

解决方法:

在我当前的环境中不需要下载xml文件,因为这个文件已经存在,在我们使用anaconda安装opencv时候,已经下载了这个xml文件了。所以只需要找到cv2/data这个目录,就会发现xml存在。那问题是anaconda安装的opencv文件具体在哪儿。我的mac电脑文件具体目录是:/Users/hxx/anaconda3/lib/python3.7/site-packages/cv2/data/haarcascade_frontalface_default.xml。找到后修改代码中的文件目录就成功了。

import cv2
import numpy as np

img = cv2.imread('photo_noisy.jpg')
print(img.shape)

face_detect = cv2.CascadeClassifier('/Users/hxx/anaconda3/lib/python3.7/site-packages/cv2/data/haarcascade_frontalface_default.xml')

face_zone = face_detect.detectMultiScale(img,scaleFactor=1.1,minNeighbors=5)
print("识别人脸信息:",face_zone)

for x,y,w,h in face_zone:
    #绘制矩形人脸区域
    cv2.rectangle(img,(x,y),(x+w,y+h),color=[0,0,255],thickness=2)
    #绘制圆形人脸区域
    cv2.circle(img,(x+w//2,y+h//2),radius=w//2,color=[0,255,0],thickness=2)

cv2.namedWindow("Easmount-CSDN",0)
cv2.imshow("result",img)

cv2.waitKey(0)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值