鱼C论坛

 找回密码
 立即注册
查看: 1925|回复: 5

求助大佬,这个代码为什么会报这个错呢,怎么修改呢

[复制链接]
发表于 2023-5-30 10:18:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
import cv2
import os
import sys
from PIL import Image
import numpy as np
def getImageAndLabels(path):
    facesSamples=[]
    ids=[]
    imagePaths=[os.path.join(path,f) for f in os.listdir(path)]
    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)[1].split('.')[0])
        for x,y,w,h in faces:
            facesSamples.append(img_numpy[y:y+h,x:x+w])
            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'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-30 10:20:11 | 显示全部楼层
这个错误说明 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 可能无法找到这些文件。

希望这个答案能帮到你。如果你有更多的问题,欢迎再次提问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-30 10:51:38 | 显示全部楼层
运行还是报错哎
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')
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-30 10:53:03 | 显示全部楼层
这个包我也是有的opencv-contrib-python
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-5-30 11:57:23 | 显示全部楼层
isdkz 发表于 2023-5-30 10:20
这个错误说明 CascadeClassifier 的构造函数试图打开并读取一个文件,但它为空或者无法找到。这个文件就是 ...

大佬,还是有点问题哎
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-5-30 14:13:15 | 显示全部楼层
你的代码似乎出现了错误。错误信息显示模块“cv2.cv2”中没有“face”属性。可能是你需要更新你的OpenCV库或者检查你是否正确安装了它。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-27 10:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表