【发布时间】:2021-10-26 07:26:42
【问题描述】:
我正在尝试使用 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
【问题讨论】:
-
什么教程?始终添加有问题的 URL(不在评论中)。
-
如果你使用 CV 函数,也许你不应该转换为
RGB——它们都可能需要BGR。当你想用plt显示它时,你需要转换为RGB -
或者也许你应该使用旧的 Python 3.8,因为某些模块可能还没有准备好使用 Python 3.9
-
代码适用于 Python 3.8、Linux Mint 20。我无法在 3.9 上对其进行测试,因为我必须编译
tensorflow,因为我有旧 CPU 和标准tensorflow不能工作。