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

使用OpenCV dnn_superres提升文本图像分辨率报错求助

文本图像超分崩溃的调整方案

1. 修复变量名错误

错误栈里调用sr.upsample(image),但代码中处理后的图像变量是img2,变量名不匹配是直接触发崩溃的原因,将该行改为:

result = sr.upsample(img2)

2. 修正图像归一化逻辑

当前归一化代码存在数值异常风险:

  • 错误使用了原始彩色图的最大值(代码里image.max()应为img.max(),更合理的是用灰度图的最大值)
  • casting='unsafe'可能导致数值溢出,建议替换为安全的归一化方式:
# 替换原归一化代码
img2 = img2.astype(np.float32)
img2 = cv2.normalize(img2, None, 0, 255, cv2.NORM_MINMAX)
img2 = img2.astype(np.uint8)

3. 调整图像尺寸适配模型要求

EDSR_x3模型要求输入图像的高、宽必须是缩放因子(3)的整数倍,否则会触发尺寸不匹配错误。添加裁剪逻辑:

h, w = img2.shape[:2]
# 裁剪到能被3整除的尺寸
new_h = h - (h % 3)
new_w = w - (w % 3)
img2 = img2[:new_h, :new_w]

4. 确保模型与环境兼容

  • 确认EDSR_x3.pb是OpenCV dnn模块兼容的预训练模型,建议从OpenCV官方预训练模型库下载适配版本
  • 升级OpenCV到4.8.0及以上稳定版本,旧版本dnn_superres模块对部分模型兼容性较差

5. 针对文本图像的专用预处理

文本图像边缘、对比度特性特殊,预处理可提升超分效果同时避免崩溃:

  • 自适应阈值强化文本边缘:
gray = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 2)
img2 = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)
  • 中值滤波去除噪点(避免超分后噪点放大):
gray = cv2.medianBlur(gray, 3)

内容的提问来源于stack exchange,提问作者Гыггыг Фидолобабович

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 23:40:31