Redimensionar imagem em Python

Manav Narula 30 janeiro 2023
  1. Use o módulo opencv para redimensionar imagens em Python
  2. Use o módulo scikit-image para redimensionar imagens em Python
  3. Crie uma função definida pelo usuário para redimensionar imagens em Python
Redimensionar imagem em Python

Neste tutorial, discutiremos como redimensionar uma imagem.

Essencialmente, vamos redimensionar o tamanho do array numpy, que representa uma imagem. Não há funcionalidade direta no módulo numpy para conseguir isso. Não podemos usar diretamente a função resize() porque ela desconsidera o eixo e não aplica interpolação ou extrapolação.

Observe que após o redimensionamento, podemos exportar este array redimensionado e salvá-lo como uma imagem. Isso é comum para todos os métodos discutidos abaixo

Use o módulo opencv para redimensionar imagens em Python

O módulo OpenCV é amplamente usado em Python para processamento de imagens e visão computacional. Para redimensionar uma imagem, vamos primeiro ler a imagem usando a função imread() e redimensioná-la usando a função resize() como mostrado abaixo.

import cv2
import numpy as np

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

O imread() retorna um array que armazena a imagem. Nós o redimensionamos com a função resize(). Um aspecto importante aqui é o parâmetro interpolation, que essencialmente diz como redimensionar uma imagem. Existem várias maneiras de redimensionar a imagem, como INTER_NEAREST, INTER_LINEAR e muito mais. Não há melhor maneira de selecionar este parâmetro; difere de situação para situação.

Use o módulo scikit-image para redimensionar imagens em Python

Este módulo é construído na biblioteca numpy e possui a função resize(), que pode redimensionar imagens de forma eficaz. Ele pode funcionar em uma variedade de canais enquanto cuida da interpolação, anti-aliasing, etc.

O código a seguir mostra como usar essa função.

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

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

Observe que usamos a função matplotlib.pyplot.imread() para ler a imagem no método acima. Pode ser substituído por qualquer método de sua preferência.

Crie uma função definida pelo usuário para redimensionar imagens em Python

Também podemos criar nossa própria função para obter o redimensionamento em Python. Deve-se notar que este método é uma função básica de redimensionamento, independente de quaisquer bibliotecas, e não executará interpolação, anti-aliasing como os métodos acima.

O código a seguir demonstra essa função.

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

Artigo relacionado - Python Image