Modifique a qualidade e a resolução da imagem em lotes (python)

Como usar o OpenCV do Python para modificar a qualidade e resolução da imagem em lotes

Quando o aprendizado profundo está criando conjuntos de dados, na maioria dos casos, ele não precisa de imagens de alta resolução como o conjunto de dados original.O programa a seguir usa bibliotecas python e opencv para realizar o processamento de degradação de imagem. Ajude-nos a modificar a qualidade e a resolução das imagens em lotes. Este artigo mostrará como usar a biblioteca OpenCV do Python para realizar esta função.

1. Instale a biblioteca OpenCV

Antes de começarmos, precisamos ter certeza de que instalamos o Python e a biblioteca OpenCV. Se você não instalou a biblioteca OpenCV, você pode usar o seguinte comando para instalá-la:

pip install opencv-python

2. Importe a biblioteca OpenCV e outras bibliotecas necessárias

Antes de começarmos a escrever código, precisamos importar a biblioteca OpenCV e outras bibliotecas necessárias:

import cv2
import os

3. Defina os diretórios de entrada e saída

Antes de começarmos a modificar em lote a qualidade e a resolução da imagem, precisamos configurar os diretórios de entrada e saída. O diretório de entrada é o caminho para a pasta que contém as imagens a serem processadas e o diretório de saída é o caminho para a pasta onde as imagens processadas são salvas. Podemos usar osa biblioteca para criar um diretório:

input_folder = 'input/'
output_folder = 'output/'

os.makedirs(output_folder, exist_ok=True)

4. Modifique a qualidade e a resolução da imagem em lotes

Agora podemos começar a modificar a qualidade e a resolução da imagem em lotes. Podemos cv2.imread()ler imagens usando métodos, cv2.imwrite()salvar imagens usando métodos e cv2.resize()modificar a resolução da imagem usando métodos. Aqui está um exemplo de código:

for filename in os.listdir(input_folder):
    if filename.endswith('.jpg') or filename.endswith('.png'):
        image = cv2.imread(os.path.join(input_folder, filename))
        
        # 修改图像分辨率
        resized_image = cv2.resize(image, (800, 600))

        # 修改图像质量
        jpeg_file = os.path.join(output_folder, filename)
        cv2.imwrite(jpeg_file, resized_image, [int(cv2.IMWRITE_JPEG_QUALITY), 90])

O código acima percorre todos os arquivos de imagem no diretório de entrada para determinar se eles terminam com '.jpg' ou '.png'. Em seguida, use cv2.resize()o método para modificar a resolução da imagem e use cv2.imwrite()o método para modificar a qualidade da imagem ajustando os parâmetros ao salvar a imagem cv2.IMWRITE_JPEG_QUALITY.

5. Conclusão

Usando a biblioteca OpenCV do Python, podemos modificar facilmente a qualidade e a resolução das imagens em lotes. Basta definir os diretórios de entrada e saída e chamar as funções correspondentes para processar rapidamente os dados da imagem em lotes. Espero que este artigo ajude você a entender e usar a biblioteca OpenCV do Python.

以下是一个小示例

import cv2
import os
address = r"C:\Users\lenovo\Desktop\paperNeed" # 存放原图片文件夹路径
list = os.listdir(address)
for i, file in enumerate(list):
    firstname = os.path.splitext(file)[0]
    typename = os.path.splitext(file)[1]
    os.rename("{}/{}".format(address, file), "{}/{}.jpg".format(address, i))
    newpath = address + "/"+"{}.jpg".format(i)

    cv2.namedWindow("Image")  # 创建窗口
    img = cv2.imread(newpath)
    cv2.imshow("Image", img)
    changepic = r"C:\Users\lenovo\Desktop\paperNeed2\{}.jpg".format(i) # 修改完质量的图片存放路径
    cv2.imwrite(changepic, img, [int(cv2.IMWRITE_JPEG_QUALITY), 10])

cv2.waitKey(0)
cv2.destroyWindow("Image")  # 关闭窗口

O principal código de mudança de qualidade é:

 cv2.imwrite(changepic, img, [int(cv2.IMWRITE_JPEG_QUALITY), 10])
Diferentes formatos de imagem aplicam parâmetros diferentes

Se o formato da imagem for .jpeg ou .jpg, selecione o parâmetro cv2.CV_IMWRITE_JPEG_QUALITY e seu valor será de 0 a 100 (quanto maior o valor, maior será a qualidade da imagem).
Se o formato da imagem for .webp, use o Parâmetro cv2.CV_IMWRITE_WEBP_QUALITY, o valor 0-100
Se o formato da imagem for .png Parâmetro cv2.CV_IMWRITE_PNG_COMPRESSION, o valor é 0-9

Acho que você gosta

Origin blog.csdn.net/m0_46114594/article/details/116069109
Recomendado
Clasificación