Cambiar el tamaño de la imagen en Python con opencv

logo python

En este pequeño post enseñaré como cambiar el tamaño de una imagen en Python con opencv. Python es un lenguaje que resulta útil, para llevar a cabo muchas tareas necesarias, incluido el tratamiento de imágenes, que pueden exigir diferentes niveles de complejidad.

Consideremos primero que una  imagen es un array, que puede ser tratado como un objeto numpy.

El método resize() de Python no es efectivo en este caso, ya que no tiene en cuenta el eje, y debido a esto no es capaz de extrapolar y/o interpolar.

El módulo opencv se usa en Python para  la visión por computadora  y el procesamiento de imágenes.

El procedimiento en esencia es leer primero la imagen empleando la función imread(), y luego cambiar su dimensión empleando función resize().

La sintaxis seria así:

dst = cv2.resize(src, dsize[, fx[, fy[, interpolation]]]])

Donde fx y fy son factores de escala a lo largo de los ejes x e y, dsize() se refiere al tamaño de la imagen de salida y el indicador de interpolación se refiere al método que vamos a usar.

Ya sea que se especifique (fx, fy) o dsize, OpenCV calcula el otro automáticamente.

Lo primero es disponer de opencv en el ordenador, para ello deberás descargarla y tenerla ya instalada. Puedes seguir las instrucciones acá .

import cv2
import numpy as np
img = cv2.imread('archivo.jpeg')
res = cv2.resize(img, dsize=(54,140),interpolation=cv2.INTER_CUBIC)

Podemos emplear como interpolación las siguientes:

Nearest Neighbor:

near_img = cv2.resize(img,None, fx = 10, fy = 10, interpolation = cv2.INTER_NEAREST)

la bilineal,

bilinear_img = cv2.resize(img,None, fx = 10, fy = 10, interpolation = cv2.INTER_LINEAR)

o la bicúbica que teníamos en el ejemplo inicial

bicubic_img = cv2.resize(img,None, fx = 10, fy = 10, interpolation = cv2.INTER_CUBIC)

Todas emplean algoritmos diferentes, y su efectividad varía de un caso a otro.

Y hasta aquí, esto es todo.

Espero que esto sirva de ayuda a alguien.

La ignorancia, es la muerte de los vivos

Translate »