求助大佬,这个代码为什么会报这个错呢,怎么修改呢
import cv2import os
import sys
from PIL import Image
import numpy as np
def getImageAndLabels(path):
facesSamples=[]
ids=[]
imagePaths=
print(imagePaths)
# 检测人脸
face_detector = cv2.CascadeClassifier(
'C:/Program Files (x86)/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')
# 遍历列表中的图片
for imagePath in imagePaths:
# 打开图片
PIL_img = Image.open(imagePath).convert('L')
# 将图像转换为数组
img_numpy = np.array(PIL_img,'uint8')
faces = face_detector.detectMultiScale(img_numpy)
# 获取每张图片的id
print(os.path.split(imagePath))
id = int(os.path.split(imagePath).split('.'))
for x,y,w,h in faces:
facesSamples.append(img_numpy)
ids.append(id)
return facesSamples,ids
if __name__== '__main__':
#图片路径
path = './data/jm/'
#获取图像 数组和id标签
faces,ids=getImageAndLabels(path)
#获取循环对象
recognizer = cv2.face.LBPHFaceRecognizer_create()
recognizer.train(faces,np.array(ids))
#保存文件
recognizer.write('trainer.yml')
cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv\modules\objdetect\src\cascadedetect.cpp:1698: error: (-215:Assertion failed) !empty() in function 'cv::CascadeClassifier::detectMultiScale'
这个错误说明 CascadeClassifier 的构造函数试图打开并读取一个文件,但它为空或者无法找到。这个文件就是你所提供的 XML 文件,它包含了用于人脸检测的训练数据。
具体来说,这个代码行引发了错误:
face_detector = cv2.CascadeClassifier('C:/Program Files (x86)/opencv/sources/data/haarcascades/haarcascade_frontalface_default.xml')
你在这里指定的路径可能找不到haarcascade_frontalface_default.xml文件。请确认这个文件的位置,并确保它是可读的。
首先,你可以检查一下你是否安装了正确版本的 OpenCV,并且它的 data 文件夹中是否包含所需要的 XML 文件。OpenCV 的安装路径可能因环境不同而不同。在某些情况下,你可能需要下载 haarcascades 数据,并将其放在正确的位置。
如果你确定你的文件路径是正确的,但仍然遇到这个问题,你可能需要检查你的环境变量。在一些情况下,如果环境变量设置不正确,Python 可能无法找到这些文件。
希望这个答案能帮到你。如果你有更多的问题,欢迎再次提问。 运行还是报错哎
D:\anaconda\envs\TF2.1\python.exe D:/ending/FaceRecognition/try.py
['./data/jm/1.jpg', './data/jm/10.jpg', './data/jm/11.jpg', './data/jm/2.jpg', './data/jm/3.jpg', './data/jm/4.jpg', './data/jm/5.jpg', './data/jm/6.jpg', './data/jm/7.jpg', './data/jm/8.jpg', './data/jm/9.jpg']
('./data/jm', '1.jpg')
('./data/jm', '10.jpg')
('./data/jm', '11.jpg')
('./data/jm', '2.jpg')
('./data/jm', '3.jpg')
('./data/jm', '4.jpg')
('./data/jm', '5.jpg')
('./data/jm', '6.jpg')
('./data/jm', '7.jpg')
('./data/jm', '8.jpg')
Traceback (most recent call last):
File "D:/ending/FaceRecognition/try.py", line 37, in <module>
recognizer = cv2.face.LBPHFaceRecognizer_create()
AttributeError: module 'cv2.cv2' has no attribute 'face'
('./data/jm', '9.jpg') 这个包我也是有的opencv-contrib-python isdkz 发表于 2023-5-30 10:20
这个错误说明 CascadeClassifier 的构造函数试图打开并读取一个文件,但它为空或者无法找到。这个文件就是 ...
大佬,还是有点问题哎{:10_266:} 你的代码似乎出现了错误。错误信息显示模块“cv2.cv2”中没有“face”属性。可能是你需要更新你的OpenCV库或者检查你是否正确安装了它。
页:
[1]