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.
davy.ai
Para verificar las dimensiones de la imagen, debemos utilizar el atributo
shape
del arreglo de numpy obtenido decv2.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 tuplashape
son iguales a las dimensiones deseadas (113, 222).Aquí hay una versión actualizada del código que incluye esta comprobación:
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.