es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo cambiar el tamaño en píxeles únicamente de aquellas imágenes que no tienen un ancho y altura específicos en píxeles dentro de una carpeta?

Tengo una carpeta llamada ‘p’ y dentro de ella hay 60 imágenes .png, lo que necesitaría es cambiar el tamaño en píxeles solo a aquellas imágenes que no sean de 113 x 222 px.

import cv2
import numpy as np
import glob

img_files = glob.glob("p/*.png")

for img_file in img_files:
    if(): #La condición que verifica las dimensiones
        img = cv2.imread(img_file)
        res = cv2.resize(img, dsize=(113, 222), interpolation=cv2.INTER_CUBIC)

Creo que con un bucle for podría recorrer las imágenes dentro de ese directorio, pero no estoy seguro de cómo validar el tamaño en píxeles de esas imágenes que deben ser redimensionadas y cuáles no.

Es importante que el resto de las imágenes que tengan 113 x 222 px no se modifiquen, y solo se reemplacen con sus versiones redimensionadas aquellas que no tenían previamente esas dimensiones.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para verificar las dimensiones de la imagen, debemos utilizar el atributo shape del arreglo de numpy obtenido de cv2.imread. En este caso, como solo estamos interesados ​​en el ancho y la altura de la imagen, podemos comprobar si los dos primeros elementos de la tupla shape son iguales a las dimensiones deseadas (113, 222).

    Aquí hay una versión actualizada del código que incluye esta comprobación:

    import cv2
    import numpy as np
    import glob
    
    img_files = glob.glob("p/*.png")
    
    for img_file in img_files:
        img = cv2.imread(img_file)
        if img.shape[:2] != (113, 222):
            res = cv2.resize(img, dsize=(113, 222), interpolation=cv2.INTER_CUBIC)
            cv2.imwrite(img_file, res)
    

    Este código recorrerá cada imagen en la carpeta “p”, comprobará si sus dimensiones son (113, 222) y, si no lo son, las redimensionará y las guardará nuevamente en el archivo original. Las imágenes que ya tienen las dimensiones deseadas se mantendrán sin cambios.

Comments are closed.