【问题标题】:cvlib causing IndexError: invalid index to scalar variablecvlib导致IndexError:标量变量的索引无效
【发布时间】: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 不能工作。

标签: python object-detection


【解决方案1】:

如果您使用的是 OpenCV > 4.5.3,它可能与 v4.5.4 中引入的这个bug 有关。我遇到了同样的错误,并且在我降级时已修复 (pip3 install opencv-python==4.5.3.56)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-03
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    相关资源
    最近更新 更多