logo

Cambiar el tamaño de la imagen usando OpenCV | Pitón

El cambio de tamaño de la imagen se refiere al escalado de las imágenes. El escalado resulta útil en muchas aplicaciones de procesamiento de imágenes y de aprendizaje automático. Ayuda a reducir la cantidad de píxeles de una imagen y eso tiene varias ventajas, p. Puede reducir el tiempo de entrenamiento de una red neuronal ya que cuanto mayor es el número de píxeles en una imagen, mayor es el número de nodos de entrada, lo que a su vez aumenta la complejidad del modelo.
También ayuda a ampliar las imágenes. Muchas veces necesitamos cambiar el tamaño de la imagen, es decir, reducirla o ampliarla para cumplir con los requisitos de tamaño. OpenCV nos proporciona varios métodos de interpolación para cambiar el tamaño de una imagen.

Elección del método de interpolación para cambiar el tamaño:

  • cv2.INTER_AREA: Esto se usa cuando necesitamos reducir una imagen.
  • cv2.INTER_CUBIC: Esto es lento pero más eficiente.
  • cv2.INTER_LINEAR: se utiliza principalmente cuando se requiere hacer zoom. Esta es la técnica de interpolación predeterminada en OpenCV.

Sintaxis: cv2.resize(fuente, dsize, destino, fx, fy, interpolación)



Parámetros:

    source: Matriz de imagen de entrada (un solo canal, 8 bits o punto flotante) dsize: Tamaño de la matriz de salida dest: Matriz de salida (similar a las dimensiones y el tipo de matriz de imagen de entrada) [opcional] fx: Factor de escala a lo largo del eje horizontal [opcional] fy: factor de escala a lo largo del eje vertical [opcional] interpolación: uno de los métodos de interpolación anteriores [opcional]

A continuación se muestra el código para cambiar el tamaño:

Python3




java si declaración

import> cv2> import> numpy as np> import> matplotlib.pyplot as plt> image>=> cv2.imread(r>'D:simsebsim21EB-ML-06-10-2022-Test-Output-15PERFORATIONOverkillFailBlister 1 2022-03-12 12-59-43.859 T0 M0 G0 3 PERFORATION Mono.bmp'>,>1>)> # Loading the image> half>=> cv2.resize(image, (>0>,>0>), fx>=> 0.1>, fy>=> 0.1>)> bigger>=> cv2.resize(image, (>1050>,>1610>))> stretch_near>=> cv2.resize(image, (>780>,>540>),> >interpolation>=> cv2.INTER_LINEAR)> Titles>=>[>'Original'>,>'Half'>,>'Bigger'>,>'Interpolation Nearest'>]> images>=>[image, half, bigger, stretch_near]> count>=> 4> for> i>in> range>(count):> >plt.subplot(>2>,>2>, i>+> 1>)> >plt.title(Titles[i])> >plt.imshow(images[i])> plt.show()>

>

>

Producción:

Nota: Una cosa a tener en cuenta al usar la función cv2.resize() es que la tupla pasada para determinar el tamaño de la nueva imagen ((1050, 1610) en este caso) sigue el orden (ancho, alto) a diferencia de lo esperado ( anchura altura).