ResNet暴力检测项目运行时报OpenCV(-215:Assertion failed)错误如何解决
报错根因分析
你遇到的FillBitmapInfo断言报错是cv2.imshow()接口触发的,并非打印预测概率逻辑导致,核心问题是你传入了不符合imshow要求格式的图像数据。
具体问题定位
你在代码中对读取到的帧做了如下操作:
- 先将原图resize到224*224尺寸,此时
color_img是符合OpenCV显示要求的3维数组(格式为(高, 宽, 通道数)) - 你直接对
color_img执行了reshape(1,224,224,3)操作,修改后color_img变成了带batch维度的4维张量,是专门适配模型输入的格式 - 后续调用
cv2.imshow('LIVE', color_img)时,OpenCV无法识别4维数组的位深、宽高参数,直接触发了断言失败报错。
修复方案
不要直接修改用于显示的原图像变量,单独生成模型输入的张量即可,修改对应代码段如下:
#resize image to 224*224 color_img = cv2.resize(color_img,(224,224)) # 单独生成模型输入的4维张量,不修改原color_img变量 model_input = color_img.reshape(1,224,224,3) pred_prob = model.predict(model_input) print(pred_prob[0][0].round(2)) pred=np.argmax(pred_prob)
其他可优化的笔误点(不影响当前报错)
responce拼写错误,正确为responseimg_hight拼写错误,正确为img_height- 路径中的反斜杠建议加转义或者用原始字符串,避免部分特殊字符被识别为转义符,比如
r'E:\Docs & Other\C-VS\ViolenceDetection\Resources\VDresnet152v2.h5'
内容的提问来源于stack exchange,提问作者Gautam Kantesariya
相关产品推荐
相关产品推荐

