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

Keras模型调用实时视频帧推理时输入形状不兼容报错如何解决

报错原因

你的模型输入要求的是带批次维度的4维张量,形状为(批次大小, 图片高度, 图片宽度, 通道数),也就是你定义的(None, 180, 180, 3),其中第一个None代表批次维度可以是任意大小。
而你从视频流读取处理后的单张帧形状为(180, 180, 3),缺少了第一个批次维度,模型传入时会自动把第一维的180识别为批次大小,导致输入形状变为(None, 180, 3),和要求的形状不匹配。

修复方案

你只需要给处理后的帧添加一个批次维度即可,修改预测前的代码:

vid = cv2.VideoCapture(0)
  
while(True):
    ret, frame = vid.read()
    # 可选:OpenCV默认读取的是BGR通道,如果你的模型是用RGB数据训练的,需要先转通道保证预测准确率
    frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
    frame= cv2.resize(frame, (180,180))
    frame = np.asarray(frame)
    frame = frame.astype('float32')
    frame /= 255.0
    # 新增:添加批次维度,把形状从(180,180,3)转为(1,180,180,3)
    frame = np.expand_dims(frame, axis=0)
    print(frame.shape)
    new_model.predict(frame)

也可以用reshape实现同样的效果:

frame = frame.reshape(1, 180, 180, 3)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:09:02