Cambiar el tamaño de la imagen en Python

Manav Narula 30 enero 2023
  1. Utilice el módulo opencv para cambiar el tamaño de las imágenes en Python
  2. Utilice el módulo scikit-image para cambiar el tamaño de las imágenes en Python
  3. Cree una función definida por el usuario para cambiar el tamaño de las imágenes en Python
Cambiar el tamaño de la imagen en Python

En este tutorial, discutiremos cómo cambiar el tamaño de una imagen.

Esencialmente, cambiaremos el tamaño del array numpy, que representa una imagen. No hay una funcionalidad directa en el módulo numpy para lograr esto. No podemos usar directamente la función resize() porque ignora el eje y no aplica interpolación o extrapolación.

Tenga en cuenta que después de cambiar el tamaño, podemos exportar esta matriz redimensionada y guardarla como una imagen. Esto es común para todos los métodos que se describen a continuación.

Utilice el módulo opencv para cambiar el tamaño de las imágenes en Python

El módulo OpenCV se usa ampliamente en Python para procesamiento de imágenes y visión por computadora. Para cambiar el tamaño de una imagen, primero leeremos la imagen usando la función imread() y lo cambiaremos usando la función resize() como se muestra a continuación.

import cv2
import numpy as np

img = cv2.imread("filename.jpeg")
res = cv2.resize(img, dsize=(54, 140), interpolation=cv2.INTER_CUBIC)

imread() devuelve un array que almacena la imagen. Lo redimensionamos con la función resize(). Un aspecto importante aquí es el parámetro de interpolation, que esencialmente dice cómo cambiar el tamaño de una imagen. Hay varias formas de cambiar el tamaño de la imagen, como INTER_NEAREST, INTER_LINEAR y más. No existe la mejor manera de seleccionar este parámetro; difiere de una situación a otra.

Utilice el módulo scikit-image para cambiar el tamaño de las imágenes en Python

Este módulo se basa en la biblioteca numpy y tiene la función resize(), que puede redimensionar imágenes de forma eficaz. Puede funcionar en una variedad de canales mientras se encarga de la interpolación, suavizado, etc.

El siguiente código muestra cómo utilizar esta función.

from skimage.transform import resize
import matplotlib.pyplot as plt

im = plt.imread("filename.jpeg")
res = resize(im, (140, 54))

Tenga en cuenta que usamos la función matplotlib.pyplot.imread() para leer la imagen en el método anterior. Puede ser sustituido por cualquier método de su preferencia.

Cree una función definida por el usuario para cambiar el tamaño de las imágenes en Python

También podemos crear nuestra propia función para lograr el cambio de tamaño en Python. Cabe señalar que este método es una función básica de cambio de tamaño, independiente de cualquier biblioteca, y no realizará interpolación, suavizado como lo harán los métodos anteriores.

El siguiente código demuestra esta función.

import matplotlib.pyplot as plt


def scale(im, nR, nC):
    number_rows = len(im)  # source number of rows
    number_columns = len(im[0])  # source number of columns
    return [
        [im[int(number_rows * r / nR)][int(number_columns * c / nC)] for c in range(nC)]
        for r in range(nR)
    ]


im = plt.imread("filename.jpeg")
res = scale(im, 30, 30)
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artículo relacionado - Python Image