AttributeError: ‘tuple‘ object has no attribute ‘flatten‘

pycharm界面中出现错误如下图:

这个错误信息表明你正在试图在元组上调用 'flatten' 方法,但是元组是没有 'flatten' 方法的。

'flatten' 方法通常是用来将多维数组展开为一维数组的。如果你想要对一个多维数组进行展开操作,应该使用 numpy 库中的 'flatten' 方法。

参考代码如下:

import numpy as np

array = np.array([[6, 7], [9, 4]])
flattened_array = array.flatten()
print(flattened_array)  # Output: [6 7 9 4]

因此,我们要将array对象进行np.array()转化,然后用一个变量flattened_array来接收array.flatten()。关键在于标红部分!!!

出错代码部分:

    indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)

    font = cv2.FONT_HERSHEY_PLAIN
    colors = np.random.uniform(0, 255, size=(len(boxes), 3))


    
    for i in indexes.flatten():
        x, y, w, h = boxes[i]
        label = str(classes[class_ids[i]])

于是,我们要将indexes对象进行np.array(indexes)转化,...

# 出现bug,添加代码部分

indexes = np.array(indexes)

flattened_indexes = indexes.flatten()

修改后,代码运行无误部分:

第一种:

    indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)

    font = cv2.FONT_HERSHEY_PLAIN
    colors = np.random.uniform(0, 255, size=(len(boxes), 3))

    # 出现BUG,添加的部分代码
    indexes = np.array(indexes) #  关键的一步

    flattened_indexes = indexes.flatten()
    
    for i in flattened_indexes:
        x, y, w, h = boxes[i]
        label = str(classes[class_ids[i]])

第二种:

    indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.5, 0.4)

    font = cv2.FONT_HERSHEY_PLAIN
    colors = np.random.uniform(0, 255, size=(len(boxes), 3))

    # 出现BUG,添加的部分代码
    indexes = np.array(indexes) # 直接给indexes转换
    
    for i in indexes.flatten():
        x, y, w, h = boxes[i]
        label = str(classes[class_ids[i]])

希望能帮助迷茫的小伙伴们!!!

参考博客文章:

attributeerror 'tuple' object has no attribute 'flatten'-掘金 (juejin.cn)icon-default.png?t=N7T8https://juejin.cn/s/attributeerror%20%27tuple%27%20object%20has%20no%20attribute%20%27flatten%27

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值