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

使用OpenCV超分辨率EDSR模型时出现Mat内存分配错误求助

问题分析与修复方案

核心错误原因

1. 预训练模型与缩放因子不匹配

你加载的是EDSR_x2.pb(对应2倍超分辨率),但调用setModel时指定了缩放因子3——每个EDSR预训练模型都是针对固定缩放倍数训练的,模型和缩放因子必须严格对应:

  • EDSR_x2.pb → 仅支持scale=2
  • EDSR_x3.pb → 仅支持scale=3
  • EDSR_x4.pb → 仅支持scale=4

2. 未验证图像加载状态

即使确认了路径,cv2.imread仍可能因文件损坏、路径特殊字符(如空格)返回None,空图像传入模型会直接触发断言错误。

修复后的完整代码

import cv2
import numpy as np
import tensorflow as tf

# 加载图像并校验
image_path = 'C:/Users/HP/Desktop/IMG Enhancement/test2.png'
image = cv2.imread(image_path)
if image is None:
    raise ValueError(f"无法加载图像,请检查路径或文件完整性:{image_path}")

# 初始化超分辨率模型
sr_model = cv2.dnn_superres.DnnSuperResImpl_create()

# 加载对应缩放倍数的预训练模型(示例用x2模型)
sr_model.readModel("EDSR_x2.pb")  # 若模型不在当前目录,请使用绝对路径
sr_model.setModel("edsr", 2)  # 缩放因子与模型严格匹配

# 执行超分辨率增强
enhanced_image = sr_model.upsample(image)

# 可选:保存或预览结果
cv2.imwrite('enhanced_test2.png', enhanced_image)
cv2.imshow('Enhanced Image', enhanced_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

额外检查项

  • 确认模型路径正确:如果EDSR_x2.pb不在脚本运行目录,替换为绝对路径(如C:/Users/HP/Desktop/IMG Enhancement/EDSR_x2.pb)
  • 验证图像完整性:用系统自带工具打开test2.png,确认文件未损坏
  • 版本兼容性:若问题仍存在,可尝试将OpenCV降级到4.5.x版本测试(部分高版本对dnn模块的兼容性存在小问题)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:53:26