Redimensionar imagens com Python
Quem nunca precisou mudar o tamanho de uma imagem ou foto? Em áreas como machine learning e IA, alterar o tamanho de imagens é uma atividade comum do processamento de imagens e um requisito fundamental que pode impactar significativamente os projetos de visão computacional. Neste post, exploraremos como as bibliotecas Pillow e OpenCV do Python fornecem métodos simples, mas poderosos, para redimensionamento de imagem eficiente e eficaz.
Instalações
Para acompanhar o post em código, será preciso instalar os pacotes que usaremos:
pip install pillow
pip install opencv-python
Redimensionamento de fotos com a biblioteca Pillow
O módulo Pillow (PIL) é uma ferramenta essencial muito utilizada por desenvolvedores que trabalham em projetos envolvendo imagens digitais. Com apenas algumas linhas de código, podemos redimensionar qualquer imagem para as dimensões desejadas sem sacrificar sua qualidade ou perder informações importantes:
from PIL import Image # importa Image
# abre imagem/foto
img = Image.open('path/para/sua/imagem.jpeg') # substitua pelo local correto de sua foto - formato JPEG, JPG, PNG, TIFF, etc
nova_largura, nova_altura = 200, 200 # novas dimensões
img_redimensionada = img.resize((nova_largura, nova_altura)) # muda tamanho da imagem
img_redimensionada.save('img_novo_tamanho.jpg') # salva imagem - atualize nome/caminho conforme suas necessidades
A estrutura do código acima é bem simples. Apenas carregamos a imagem que queremos alterar as dimensões e usamos o método resize() para redimensionar a imagem (em píxeis). Neste exemplo, nova_largura e nova_altura representam as dimensões finais da imagem (no exemplo, 200 píxeis de largura e altura). Por fim, salvamos a imagem redimensionada.
Redimensionamento de imagem usando a biblioteca OpenCV
OpenCV é outra poderosa biblioteca Python que oferece recursos para o processamento de imagens digitais. Em comparação à biblioteca Pillow, os recursos do OpenCV são ainda mais avançados quando se trata de lidar com imagens. Entre esses recursos está a capacidade de redimensionar imagens e fotos com precisão através de técnicas de interpolação, como métodos de dimensionamento cúbicos ou bilineares usados em tarefas relacionadas à IA. Abaixo, demonstramos como você pode aproveitar o OpenCV para redimensionar uma imagem, mantendo seu conteúdo principal:
import cv2 # importa OpenCV
img = cv2.imread('local/da/sua/imagem') # substitua pelo local correto de sua foto
nova_largura, nova_altura = 1500, 1500
img_redimensionada = cv2.resize(img, (nova_largura, nova_altura), interpolation=cv2.INTER_CUBIC) # muda tamanho da imagem com INTER_CUBIC
cv2.imwrite('img_novo_tamanho.jpg', img_redimensionada) # salva imagem
Neste exemplo, usamos cv2 para carregar nossa imagem de entrada e, em seguida, aplicamos a interpolação cúbica (a mais precisa de todas) para produzir uma nova imagem com alta qualidade usando o método INTER_CUBIC. Ele é particularmente bom quando queremos aumentar o tamanho de uma imagem. Outra alternativa eficaz do OpenCV para aumentar imagens é a interpolação INTER_LINEAR. Quando desejamos diminuir a imagem, um dos métodos recomendados do OpenCV é a interpolação INTER_AREA. Veja um exemplo abaixo de como usá-la, basta mudar o método de interpolação:
import cv2 # importa OpenCV
img = cv2.imread('local/da/sua/imagem')
nova_largura, nova_altura = 100, 100
img_redimensionada = cv2.resize(img, (nova_largura, nova_altura), interpolation=cv2.INTER_CUBIC) # muda tamanho da imagem com INTER_AREA
cv2.imwrite('img_novo_tamanho.jpg', img_redimensionada) # salva imagem
As imagens redimensionadas com métodos da biblioteca OpenCV podem ser utilizadas em vários aplicativos de IA, como reconhecimento facial, e com desempenho e precisão significativamente melhores do que as opções mais simples de outras bibliotecas, como o Pillow, devido às técnicas de interpolação mais sofisticadas. E tudo isso oferecido em uma biblioteca de código aberto!
Conclusão
O redimensionamento de imagens é uma das muitas tarefas cruciais no campo da visão computacional. Ser capaz de executar esse processo de forma eficaz aumentará sua capacidade como desenvolvedor para trabalhar com aplicativos que utilizam e manipulam imagens.