- 说明及各模型下载
https://github.com/opencv/opencv_contrib/tree/master/modules/dnn_superres
- 结论
时髦归时髦,我在虚拟机中测试,性能非常之差。
而且更可笑的是,必须是整数,这基本没有应用场景。
- 代码
import cv2 from cv2 import dnn_superres import time def 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 result models=[ ['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])