- 说明及各模型下载
https://github.com/opencv/opencv_contrib/tree/master/modules/dnn_superres
- 结论
时髦归时髦,我在虚拟机中测试,性能非常之差。
而且更可笑的是,必须是整数,这基本没有应用场景。
-
代码
import cv2
from cv2 import dnn_superres
import timedef super_resolution(input_path, model_path, model_name, scale):
# 初始化
sr = dnn_superres.DnnSuperResImpl_create()
print(model_path)
# 读取模型
sr.readModel(model_path)
sr.setModel(model_name, scale)# 读取图像 img = cv2.imread(input_path) if img is None: print("无法读取图像") return # 记录时间 start_time = time.time() for index in range(count): # 超分辨率重建 result = sr.upsample(img) print('%s cost time: %.2f ms' % (model_path, (time.time()-start_time)*1000/count)) return resultmodels=[
['EDSR_x2.pb', 2, 'edsr'],
['ESPCN_x2.pb', 2, 'espcn'],
['FSRCNN-small_x2.pb', 2, 'fsrcnn'],
['FSRCNN_x2.pb', 2, 'fsrcnn'],
['LapSRN_x2.pb', 2, 'lapsrn'],
['EDSR_x3.pb', 3, 'edsr'],
['ESPCN_x3.pb', 3, 'espcn'],
['FSRCNN-small_x3.pb', 3, 'fsrcnn'],
['FSRCNN_x3.pb', 3, 'fsrcnn'],
['LapSRN_x4.pb', 4, 'lapsrn'],
['EDSR_x4.pb', 4, 'edsr'],
['ESPCN_x4.pb', 4, 'espcn'],
['FSRCNN-small_x4.pb', 4, 'fsrcnn'],
['FSRCNN_x4.pb', 4, 'fsrcnn'],
['LapSRN_x8.pb', 8, 'lapsrn']
]test_file='lotus-300x300.jpg'
test_file='lotus-600x600.jpg'count=10
scale=2
for model in models:
super_resolution(
test_file,
"models/"+model[0],
model[2],
model[1])