You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

加载YOLO时出现invalid index to scalar variable报错如何处理

错误根因

这个报错不是Python版本差异导致的,是OpenCV库版本不兼容触发的问题:

  • OpenCV 4.5.x及更早版本中,getUnconnectedOutLayers()返回的是二维嵌套数组,结构为[[n], [m], [k]],所以你写的i[0]可以正常取到索引值,Colab默认预装的OpenCV版本通常属于这个范围,所以代码可以运行。
  • OpenCV 4.6.x及更新版本优化了这个接口的返回值,改为一维标量数组,结构为[n, m, k],此时对标量i取i[0]就会触发IndexError: invalid index to scalar variable报错,和你Jupyter环境的报错完全吻合。
修复代码

可以用兼容新旧版本的写法替换原有yolo_layers行:

network = cv2.dnn.readNetFromDarknet('yolov3.cfg', 'yolov3.weights')
layers = network.getLayerNames()
unconnected_out_layers = network.getUnconnectedOutLayers()

# 自动适配不同版本OpenCV
if unconnected_out_layers.ndim == 1:
    yolo_layers = [layers[i - 1] for i in unconnected_out_layers]
else:
    yolo_layers = [layers[i[0] - 1] for i in unconnected_out_layers]
验证方法

你可以执行以下代码确认环境差异:

  • 查看OpenCV版本:print(cv2.__version__)
  • 查看接口返回结构:print(network.getUnconnectedOutLayers())

内容的提问来源于stack exchange,提问作者abe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 21:36:04