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

OpenVINO传入NumPy数组报错:如何直接传入数组编译模型?

问题分析与解决方法

核心错误

你问题代码里的致命问题是:把输入图像数组传给了Core().compile_model()。这个函数的作用是编译模型文件(比如.xml、.onnx格式),生成可执行的推理模型对象,而非执行推理。工作代码里是先完成模型编译得到compiled_model,再用这个对象处理输入数据做推理。

修正后的代码示例

# 把模型编译步骤移到循环外,仅执行一次
core = Core()
# 替换为你的实际模型路径,比如 model_path = "mobilenet.xml"
compiled_model = core.compile_model(model=model_path, device_name="CPU")
output_layer = compiled_model.output(0)

# 批量处理图像
for img in img_batch:
    # 若模型要求RGB格式,取消下面注释(根据img的实际格式调整)
    # image = cv2.cvtColor(img, code=cv2.COLOR_BGR2RGB)
    resized_image = cv2.resize(src=img, dsize=(
        self.node_input.input_resolution.width, self.node_input.input_resolution.height))
    # 对齐工作代码的输入预处理逻辑,确保维度、类型匹配模型要求
    input_img = np.expand_dims(np.transpose(resized_image, (0, 1, 2)), 0).astype(np.float32)
    # 用预编译好的模型执行推理,和工作代码逻辑一致
    res = compiled_model([input_img])[output_layer]

额外注意事项

  • 模型编译属于高耗时操作,必须放在循环外部,避免重复编译浪费计算资源
  • 确认输入数据的通道顺序(比如是否需要从HWC转成CHW,若模型要求CHW,transpose参数应改为(2,0,1))、数据类型(np.float32)与模型输入要求完全匹配
  • 检查img_batch中的每张图像是否为合法的NumPy数组(比如是否为3通道、uint8类型等)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:18:29