Métodos de escala de interpolação comumente usados
cv2.resize()
Os parâmetros na função interpolation
especificam o método de interpolação usado ao dimensionar a imagem. A seguir estão os métodos de interpolação comumente usados:
cv2.INTER_NEAREST
: Interpolação do vizinho mais próximo. Este método interpola selecionando o pixel original mais próximo do pixel alvo. É o método de interpolação mais rápido, mas pode causar efeitos de bordas irregulares.
cv2.INTER_LINEAR
: Interpolação bilinear. Este método calcula o valor do pixel alvo usando uma combinação linear dos pixels originais. Ela fornece resultados mais suaves do que a interpolação do vizinho mais próximo, mas pode perder detalhes ao reduzir a imagem.
cv2.INTER_CUBIC
: Interpolação bicúbica. Este método usa mais pixels vizinhos com base na interpolação bilinear para obter resultados de escala de maior qualidade. É mais intensivo computacionalmente do que a interpolação bilinear, mas fornece melhores resultados.
cv2.INTER_LANCZOS4
: Interpolação de Lanczos. Este método usa o algoritmo Lanczos para calcular o valor do pixel alvo. Ele fornece melhor fidelidade ao dimensionar imagens, mas é mais intensivo em termos computacionais.
cv2.INTER_AREa
: Adequado para reduzir imagens sem distorção. Para obter detalhes, consulte a postagem do blog: O que exatamente o INTER_AREA no OpenCV está fazendo?
Exemplo de zoom
código
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)
Resumir
A descrição acima mostra como usar a função cv2.resize() para personalizar em lote o tamanho da imagem com zoom. Os estudiosos usam os parâmetros de escalonamento correspondentes de acordo com suas próprias necessidades de escalonamento. Obrigado pelo seu apoio!