我正在尝试使用cvlib学习一个简单的对象检测教程,但是我一直遇到一个IndexError,并且找不到其他人在这个问题上挣扎。下面是我从教程和输出中复制和粘贴的完整代码。任何帮助都是非常感谢的!
代码:
import cv2
import numpy as np
import matplotlib.pyplot as plt
import cvlib as cv
from cvlib.object_detection import draw_bbox, detect_common_objects
from numpy.lib.polynomial import poly
input = cv2.imread('cars1.jpg')
image = cv2.cvtColor(input,cv2.COLOR_BGR2RGB)
plt.axis('off')
box, label, count = cv.detect_common_objects(image)
output = draw_bbox(image, box, label, count)
plt.imshow(output)
plt.show()输出
Traceback (most recent call last):
File "/Users/zechariahtay/Desktop/ttt.py",
line 19, in <module>
box, label, count = cv.detect_common_objects(image)
File "/usr/local/lib/python3.9/site-packages/cvlib/object_detection.py",
line 135, in detect_common_objects
outs = net.forward(get_output_layers(net))
File "/usr/local/lib/python3.9/site-packages/cvlib/object_detection.py",
line 29, in get_output_layers
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
File
"/usr/local/lib/python3.9/site-packages/cvlib/object_detection.py",
line 29, in <listcomp>
output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()]
IndexError: invalid index to scalar variable发布于 2021-10-29 15:34:50
如果您使用的是OpenCV > 4.5.3,则可能与v4.5.4中引入的这个错误有关。我也有同样的错误,当我降级(pip3 install opencv-python==4.5.3.56)时,它被修正了。
发布于 2022-06-18 14:30:29
没有必要降低您的OpenCV版本。后期版本返回一个一维数组,其中包含每个层的索引。只需避免索引([0]),如下所示:
output_layers = [layer_names[i - 1] for i in net.getUnconnectedOutLayers()]
https://stackoverflow.com/questions/69719025
复制相似问题