Use a função cv2.resize() em Python para personalizar o tamanho da imagem dimensionada em lotes

Métodos de escala de interpolação comumente usados

cv2.resize()Os parâmetros na função interpolationespecificam 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

Insira a descrição da imagem aqui

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!

Acho que você gosta

Origin blog.csdn.net/qq_40280673/article/details/134018946
Recomendado
Clasificación