Python OpenCV: transformación afín

OpenCV es la enorme biblioteca de código abierto para visión por computadora, aprendizaje automático y procesamiento de imágenes y ahora juega un papel importante en la operación en tiempo real, lo cual es muy importante en los sistemas actuales. Al usarlo, uno puede procesar imágenes y videos para identificar objetos, rostros o incluso la escritura a mano de un ser humano. Cuando se integra con varias bibliotecas, como Numpuy, Python es capaz de procesar la estructura de array de OpenCV para su análisis.

Nota: Para obtener más información, consulte el Tutorial de OpenCV Python

Transformacion afin

En la transformación afín, todas las líneas paralelas en la imagen original seguirán siendo paralelas en la imagen de salida. Para encontrar la array de transformación, necesitamos tres puntos de la imagen de entrada y sus ubicaciones correspondientes en la imagen de salida. Luego, cv2.getAffineTransform creará una array de 2 × 3 que se pasará a cv2.warpAffine .

Método cv2.getAffineTransform:

Sintaxis: cv2.getPerspectiveTransform(src, dst)

Parámetros:
src: Coordenadas de vértices cuadrangulares en la imagen de origen.
dst: Coordenadas de los vértices del cuadrángulo correspondiente en la imagen de destino.

Método cv2.warp Affine:

Sintaxis: cv2.warpAffine(src, M, dsize, dst, flags, borderMode, borderValue)

Parámetros:
src: imagen de entrada.
dst: imagen de salida que tiene el tamaño dsize y el mismo tipo que src.
M: array de transformación.
dsize: tamaño de la imagen de salida.
banderas: combinación de métodos de interpolación (ver resize() ) y la bandera opcional
WARP_INVERSE_MAP que significa que M es la transformación inversa (dst->src).
borderMode: método de extrapolación de píxeles; cuando borderMode=BORDER_TRANSPARENT, significa que la función no modifica los píxeles de la imagen de destino correspondientes a los «valores atípicos» de la imagen de origen.
borderValue: valor utilizado en caso de un borde constante; por defecto, es 0.

Ejemplo 1:

import cv2
import numpy as np
from matplotlib import pyplot as plt
  
  
img = cv2.imread('food.jpeg')
rows, cols, ch = img.shape
  
pts1 = np.float32([[50, 50],
                   [200, 50], 
                   [50, 200]])
  
pts2 = np.float32([[10, 100],
                   [200, 50], 
                   [100, 250]])
  
M = cv2.getAffineTransform(pts1, pts2)
dst = cv2.warpAffine(img, M, (cols, rows))
  
plt.subplot(121)
plt.imshow(img)
plt.title('Input')
  
plt.subplot(122)
plt.imshow(dst)
plt.title('Output')
  
plt.show()
  
# Displaying the image
while(1):
      
    cv2.imshow('image', img)
    if cv2.waitKey(20) & 0xFF == 27:
        break
          
cv2.destroyAllWindows()

Producción:
Python OpenCV: Affine Transformation

Ejemplo 2:

import cv2
import numpy as np
from matplotlib import pyplot as plt
  
  
img = cv2.imread('food.jpeg')
rows, cols, ch = img.shape
  
pts1 = np.float32([[50, 50], 
                   [200, 50],
                   [50, 200]])
  
pts2 = np.float32([[10, 100],
                   [200, 50], 
                   [100, 250]])
  
M = cv2.getAffineTransform(pts1, pts2)
dst = cv2.warpAffine(img, M, (cols, rows))
  
plt.subplot(121)
plt.imshow(img)
plt.title('Input')
  
plt.subplot(122)
plt.imshow(dst)
plt.title('Output')
plt.show()
  
# Displaying the image
while(1):
      
    cv2.imshow('image', img)
    if cv2.waitKey(20) & 0xFF == 27:
        break
          
cv2.destroyAllWindows()

Producción:
Python OpenCV: Affine Transformation

Publicación traducida automáticamente

Artículo escrito por sourabhpanday2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *