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

使用cv2.dnn_superres调用EDSR_x4超分辨图片时upsample报错

解决OpenCV DNN超分辨率Winograd断言错误问题

问题重现

使用预训练EDSR_x4模型进行图片超分辨率放大时触发以下错误:

error: OpenCV(4.7.0) /Users/runner/work/opencv-python/opencv-python/opencv/modules/dnn/src/layers/fast_convolution/winograd_3x3s1_f63.cpp:147: error: (-215:Assertion failed) _FX_WINO_IBLOCK == 3 && _FX_WINO_KBLOCK == 4 in function '_fx_winograd_accum_f32'

代码半年前可正常运行,当前环境为macOS 13.1 M1芯片、Python 3.9.12,已更新opencv-python和opencv-contrib-python至最新版本,图片路径无误可正常加载。

解决方案

1. 降级OpenCV版本到4.6.x

OpenCV 4.7.x在Apple Silicon平台的Winograd卷积实现存在兼容性bug,降级到之前的稳定版本可解决问题:

pip uninstall opencv-python opencv-contrib-python
pip install opencv-python==4.6.0.66 opencv-contrib-python==4.6.0.66

2. 强制使用CPU后端绕开Winograd优化

在加载模型后添加代码,禁用可能引发问题的硬件加速后端:

import cv2
import os

# load EDSR model
sr = cv2.dnn_superres.DnnSuperResImpl_create()
path = "EDSR_x4.pb"
sr.readModel(path)
sr.setModel("edsr",4)

# 添加以下两行代码,强制使用CPU后端
sr.setPreferableBackend(cv2.dnn.DNN_BACKEND_OPENCV)
sr.setPreferableTarget(cv2.dnn.DNN_TARGET_CPU)

# set path
img = cv2.imread(r'test.jpg')

# upscale
result = sr.upsample(img)

cv2.imwrite("test1.jpg",result)

3. 验证模型文件完整性

重新获取官方EDSR_x4预训练模型,确保文件未损坏或不完整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 15:15:10