项目场景:人脸识别
from turtle import shape
from cv2 import COLOR_BAYER_BG2BGR, COLOR_BAYER_BG2GRAY
import numpy as np
import cv2
img = cv2.imread("xixi.jpg")
#级联分类器(根据多个特征识别人脸)人脸:眼睛、嘴巴、鼻子、额头、脸颊、眉毛等
#级联算法,满足一部分即可识别为人脸
path = "E:\\anaconda\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml"
face_detector = cv2.CascadeClassifier(path)
print(img.shape)
gray = cv2.cvtColor(img,code=cv2.COLOR_BGR2GRAY)
print(gray,shape)
faces = face_detector.detectMultiScale(gray) #检测人脸
print(faces)
for x,y,w,h in faces:
#cv2.rectangle(img, #标记图片
#pt1 = (x,y), #左上角
#pt2 = (x + w,y + h), #右下角
#color = [0,0,255], #颜色
#thickness=2) #线宽
cv2.circle(img,
center=(x + w//2,y + h//2),
radius=h//2,
color=[0,0,255],
thickness=2)
cv2.putText(img = img,
text='xixi', #显示的文本
org=(x,y), #位置
fontFace=cv2.FONT_HERSHEY_PLAIN,#字体
fontScale=12, #字号
color=[0,0,255],
thickness=2) #颜色
cv2.imshow("face",img)
cv2.waitKey(0)
cv2.destroyAllWindows()
报错显示:
cv2.error: OpenCV(4.5.5) D:\a\opencv-python\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function cv::CascadeClassifier::detectMultiSc
报错位置:
face_detector = cv2.CascadeClassifier("haarcascade_frontalface_alt.xml")
原因分析:
我一开始只是把文件复制到另一个文件夹中,以为直接文件名打开就行,结果总是运行不了,
path = "E:\\anaconda\Lib\site-packages\cv2\data\haarcascade_frontalface_alt.xml"
face_detector = cv2.CascadeClassifier(path)
最后换成原来的文件路径就可以了。
小提示:(怎么找到OpenCV的那些文件)
划红线的位置都是一样的,这里就有opencv的所有文件啦~
如果还有小伙伴情况类似,但是上述方法仍旧不能解决的话,有可能是中文路径导致错误;