目录
- 常用插值缩放方法
- 缩放示例
- 代码
- 总结
常用插值缩放方法
cv2.resize()
函数中的interpolation
参数指定了图像缩放时使用的插值方法。以下是常用的插值方法:
cv2.INTER_NEAREST
:最近邻插值。该方法通过选择最接近目标像素的原始像素来进行插值。它是最快速的插值方法,但可能会导致锯齿状边缘效果。
cv2.INTER_LINEAR
:双线性插值。该方法通过使用原始像素的线性组合来计算目标像素的值。它比最近邻插值提供了更平滑的结果,但在缩小图像时可能会丢失细节。
cv2.INTER_CUBIC
:双三次插值。该方法在双线性插值的基础上使用了更多的邻近像素,以获得更高质量的缩放结果。它比双线性插值计算量更大,但效果更好。
cv2.INTER_LANCZOS4
:Lanczos插值。该方法使用Lanczos算法来计算目标像素的值。它在缩放图像时提供了更好的保真度,但计算量较大。
缩放示例
代码
import os
import cv2
# 获取文件路径
folder_path = "E:/SR_Images/DIV2K_theml/DIV2K_train_HR"
output_path = "E:/SR_Images/DIV2K_theml/DIV2K_train_LR_bicubic/X2"
# 获取文件夹中所有的文件
file_list = os.listdir(folder_path)
# 遍历文件列表
for file_name in file_list:
# 拼接文件路径
file_path = os.path.join(folder_path,file_name)
# 仅处理图像文件
if os.path.isfile(file_path) and file_name.lower().endswith(('.png',',jpg','.jpeg','.bmp')):
# 读取图像路径
image = cv2.imread(file_path)
# 获取图像原尺寸
height,width = image.shape[:2]
# 计算缩放后的尺寸
new_heiht = int(height / 2)
new_width = int(width / 2)
# 缩放图像
resized_image = cv2.resize(image,(new_width,new_heiht),interpolation=cv2.INTER_CUBIC) # 例子中使用了双三次插值
# 保存缩放后的图像
output_file = file_name[:-4] + "x2.png"
cv2.imwrite(os.path.join(output_path,output_file),resized_image)
总结
以上就是使用cv2.resize()函数批量自定义缩放图像尺寸的方法,学者根据自己的缩放需求使用对应的缩放参数,多多支持,谢谢!