Procesamiento de imágenes en Python (escalado, rotación, desplazamiento y detección de bordes)

Tomar fotografías es solo cuestión de hacer clic, así que jugar con él debería ser más que unas pocas líneas de código. Parece que no es un caso con python. Hay bastantes buenas bibliotecas disponibles en python para procesar imágenes como open-cv, Pillow, etc. En este artículo usaremos Open CV , una biblioteca de código abierto para visión por computadora. Tiene interfaces C++, python y java disponibles. Está altamente optimizado (escrito en C/C++) para aplicaciones en tiempo real en el dominio de la visión artificial.

Comencemos con uno simple, es decir, escalar una imagen.

Escalar una imagen :-

La operación de escalado aumenta/reduce el tamaño de una imagen.

import cv2
import numpy as np
  
FILE_NAME = 'volleyball.jpg'
try:
    # Read image from disk.
    img = cv2.imread(FILE_NAME)
  
    # Get number of pixel horizontally and vertically.
    (height, width) = img.shape[:2]
  
    # Specify the size of image along with interploation methods.
    # cv2.INTER_AREA is used for shrinking, whereas cv2.INTER_CUBIC
    # is used for zooming.
    res = cv2.resize(img, (int(width / 2), int(height / 2)), interpolation = cv2.INTER_CUBIC)
  
    # Write image back to disk.
    cv2.imwrite('result.jpg', res)
  
except IOError:
    print ('Error while reading files !!!')

Producción:

Rotación de una imagen: las
imágenes se pueden rotar en cualquier grado en el sentido de las agujas del reloj o de otra manera. Solo necesitamos definir la array de rotación que enumera el punto de rotación, el grado de rotación y el factor de escala.

import cv2
import numpy as np
  
FILE_NAME = 'volleyball.jpg'
try:
    # Read image from the disk.
    img = cv2.imread(FILE_NAME)
  
    # Shape of image in terms of pixels.
    (rows, cols) = img.shape[:2]
  
    # getRotationMatrix2D creates a matrix needed for transformation.
    # We want matrix for rotation w.r.t center to 45 degree without scaling.
    M = cv2.getRotationMatrix2D((cols / 2, rows / 2), 45, 1)
    res = cv2.warpAffine(img, M, (cols, rows))
  
    # Write image back to disk.
    cv2.imwrite('result.jpg', res)
except IOError:
    print ('Error while reading files !!!')

Producción:

Traducir una imagen:
traducir una imagen significa cambiarla dentro de un marco de referencia dado.

import cv2
import numpy as np
  
FILE_NAME = 'volleyball.jpg'
# Create translation matrix.
# If the shift is (x, y) then matrix would be
# M = [1 0 x]
#     [0 1 y]
# Let's shift by (100, 50).
M = np.float32([[1, 0, 100], [0, 1, 50]])
  
try:
  
    # Read image from disk.
    img = cv2.imread(FILE_NAME)
    (rows, cols) = img.shape[:2]
  
    # warpAffine does appropriate shifting given the
    # translation matrix.
    res = cv2.warpAffine(img, M, (cols, rows))
  
    # Write image back to disk.
    cv2.imwrite('result.jpg', res)
  
except IOError:
    print ('Error while reading files !!!')

Producción:

Detección de bordes en una imagen:
el proceso de detección de imágenes implica la detección de bordes afilados en la imagen. Esta detección de bordes es esencial en el contexto del reconocimiento de imágenes o la localización/detección de objetos . Existen varios algoritmos para detectar bordes debido a su amplia aplicabilidad. Usaremos uno de esos algoritmos conocido como Canny Edge Detection .

import cv2
import numpy as np
  
FILE_NAME = 'volleyball.jpg'
try:
    # Read image from disk.
    img = cv2.imread(FILE_NAME)
  
    # Canny edge detection.
    edges = cv2.Canny(img, 100, 200)
  
    # Write image back to disk.
    cv2.imwrite('result.jpg', edges)
except IOError:
    print ('Error while reading files !!!')

Producción:

Consulte Github para obtener más detalles.

Publicación traducida automáticamente

Artículo escrito por Ravindra_P 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 *