阿白755 2024-05-10 23:43 采纳率: 0%
浏览 6

python使用np函数报错

在《用python语言如何写一个基于haar特征和逻辑回归模型的人脸识别的代码并绘制出ROC曲线》

img

报错为'numpy.int32' object has no attribute 'append'

img

意思是往数组y中添数字1的代码y.append(1)出现了问题

  • 写回答

2条回答 默认 最新

  • 笑面虎 2024-05-10 23:43
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    【您想要解决的问题】:您想要解决的问题是在编写一个基于Haar特征和逻辑回归模型的人脸识别系统时,遇到了一个错误,导致无法将数字1添加到数组y中。

    【图片内容】:

    • 第一张图片包含了一段Python代码,该代码使用OpenCV库来检测图像中的面孔,并将检测到的面孔添加到训练数据中。代码中有一个错误,即在尝试将检测到的面孔添加到列表X和标签y时,使用了错误的语法。
    • 第二张图片显示了一个Python错误消息,指出'numpy.int32' object has no attribute 'append',这意味着代码尝试在一个numpy.int32对象上使用append方法,但这是不允许的。

    【问题出现原因】:问题出现的原因是在代码中,变量y被赋予了一个numpy.int32对象,而不是预期的列表。在Python中,整数类型的对象没有append方法,这就是为什么尝试执行y.append(1)时会出现错误。

    【问题解决方案】:要解决这个问题,您需要确保变量y是一个列表,而不是一个整数或numpy.int32对象。以下是修改后的代码段:

    # 正确的初始化方式
    X = []
    y = []
    
    # 在循环中正确地添加标签
    for filename in os.listdir(r"./" + directory_name):
        img = cv2.imread(directory_name + "/" + filename)
        gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        faces = face_cascade.detectMultiscale(gray, 1.3, 5)
        if len(faces) >= 1:
            y.append(1)  # 这里y是一个列表,可以正常添加元素
        for (x, y, w, h) in faces:
            face = img[y:y+h, x:x+w]
            face = cv2.resize(face, (100, 100))
            X.append(face.flatten())
    

    【提供代码】:上面的代码段应该可以解决您遇到的问题。确保在执行代码之前,Xy都被正确地初始化为列表。

    【代码运行方式】:运行这段代码需要有Python环境,以及安装了OpenCV、numpy和sklearn库。您可以在命令行中使用python 脚本名.py来运行这段代码。

    【代码预期运行结果】:如果代码正确运行,它将读取指定目录下的图像文件,使用Haar特征级联检测面孔,并将检测到的面孔及其标签添加到Xy列表中。然后,您可以使用这些数据来训练逻辑回归模型,并绘制ROC曲线。

    【推荐相关链接】:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月10日

悬赏问题

  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息