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]])
希望能帮助迷茫的小伙伴们!!!
参考博客文章: