本文共 1876 字,大约阅读时间需要 6 分钟。
在学习opencv-python时,利用笔记本摄像头实现一个视频流人脸识别小程序,其中在调用opencv的haarcascade_frontalface_default.xml时程序报错SystemError,详细信息如下:
import cv2import numpy as npimg = 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 cv2import numpy as npimg = 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)
转载地址:http://xfulf.baihongyu.com/