os operating system interface
os.path.split
分离文件夹和文件名
os.path.splitext
分离文件夹+文件名和文件名后缀
图像处理
hr_img_dims = (hr_img.shape[1], hr_img.shape[0])
lr_image_2x = cv2.resize(hr_img, (0, 0), fx=0.5, fy=0.5, interpolation=cv2.INTER_CUBIC)
if args.keepdims:
lr_image_2x = cv2.resize(lr_image_2x, hr_img_dims, interpolation=cv2.INTER_CUBIC)
这段代码的作用是将高分辨率图像缩小一倍,得到低分辨率图像,然后通过双立方插值将低分辨率图像恢复为原始大小。具体解释如下:
首先获取高分辨率图像的宽和高。
然后将高分辨率图像缩小一倍,得到低分辨率图像lr_image_2x,缩放时采用双立方插值方法。
最后,如果参数args.keepdims为True,则将低分辨率图像lr_image_2x恢复为原始大小,缩放时也采用双立方插值方法,得到的结果是一个与高分辨率图像大小相同的低分辨率图像。
hr_img_dims = (hr_img.shape[1], hr_img.shape[0])
lr_image_2x = cv2.resize(hr_img, (0, 0), fx=0.5, fy=0.5, interpolation=cv2.INTER_CUBIC)
if args.keepdims:
lr_image_2x = cv2.resize(lr_image_2x, hr_img_dims, interpolation=cv2.INTER_CUBIC)
# 为什么上述代码中hr_img_dims存储的是(hr_img.shape[1], hr_img.shape[0]),而不是(hr_img.shape[0], hr_img.shape[1])?代码是不是写反了?
在图像处理中,通常使用的是行(height)和列(width)来描述图像的大小和形状,因此在定义图像的形状时,通常使用的是(height, width)的形式,而不是(width, height)。因此,在上述代码中,hr_img_dims存储的是(hr_img.shape[1], hr_img.shape[0]),即(width, height)的形式是正确的,不需要交换顺序。