Python OpenCV – función dibujar puntos clave()

En este artículo, analicemos la función drawKeypoints() de OpenCV. Las cualidades distintivas de una imagen que la hacen destacar se denominan puntos clave de una imagen. Los puntos clave de una imagen en particular nos permiten reconocer objetos y comparar imágenes. La detección de puntos críticos en una imagen se puede realizar utilizando una variedad de técnicas y algoritmos. Utilizamos el método drawKeypoints() en OpenCV para poder dibujar los puntos clave identificados en una imagen dada. La imagen de entrada, los puntos clave, el color y la bandera se envían al método drawKeypoints(). Los puntos clave son los aspectos más importantes de la detección. Incluso después de modificar la imagen, los puntos clave siguen siendo los mismos. A partir de ahora, solo podemos usar la función SIRF_create() ya que la función de navegación está patentada. 

Sintaxis de la función drawKeypoints():

dibujar puntos clave (imagen_de_entrada, puntos_clave, imagen_de_salida, color, bandera)

parámetros:

  • input_image: la imagen que se convierte en escala de grises y luego los puntos clave se extraen utilizando los algoritmos SURF o SIFT se denomina imagen de entrada.
  • key_points: los puntos clave obtenidos de la imagen de entrada después de usar los algoritmos se denominan puntos clave.
  • output_image :   imagen sobre la que se dibujan los puntos clave.
  • color : el color de los puntos clave.
  •  bandera: las características del dibujo están representadas por la bandera.

Ejemplo 1:

Este ejemplo comienza con la importación de los paquetes OpenCV y matplotlib. leemos una imagen, la convertimos en escala de grises y luego aplicamos el algoritmo SIRF_create() que nos ayuda a detectar puntos clave en las imágenes. La función drawKeypoints() toma una serie de parámetros y dibuja los puntos clave en la imagen. la bandera se puede cambiar. En el siguiente ejemplo, usamos cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS como bandera. Se traza la imagen de salida. en lugar de usar cv2.SIRF_create() , también se puede usar cv2.xfeatures2d.SIFT_create(), en algunas versiones de OpenCV podría no funcionar. Lo mismo ocurre con el algoritmo cv2.xfeatures2d.SURF_create().

Nota: el color es (255,0,0) para rojo, (0,0,255) para azul y (0,255,0) para verde.

Imagen utilizada:

Python3

# importing packages
import cv2
import matplotlib.pyplot as plt
 
# reading image using the imread() function
imageread = cv2.imread('img1.jpeg')
 
# input image is converted to gray scale image
imagegray = cv2.cvtColor(imageread, cv2.COLOR_BGR2GRAY)
 
# using the SIRF algorithm to detect key
# points in the image
features = cv2.SIFT_create()
 
keypoints = features.detect(imagegray, None)
 
# drawKeypoints function is used to draw keypoints
output_image = cv2.drawKeypoints(imagegray, keypoints, 0, (0, 0, 255),
                                 flags=cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS)
 
# displaying the image with keypoints as the
# output on the screen
 
plt.imshow(output_image)
 
# plotting image
plt.show()

Producción:

Ejemplo 2:

Este ejemplo es similar al anterior excepto que cambiamos el color a rojo (255,0,0) y la bandera a cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS.

Python3

# importing packages
import cv2
import matplotlib.pyplot as plt
 
# reading image using the imread() function
imageread = cv2.imread('img1.jpeg')
 
# input image is converted to gray scale image
imagegray = cv2.cvtColor(imageread, cv2.COLOR_BGR2GRAY)
 
# using the SIRF algorithm to detect key
# points in the image
features = cv2.SIFT_create()
 
keypoints = features.detect(imagegray, None)
 
# drawKeypoints function is used to draw keypoints
output_image = cv2.drawKeypoints(imagegray, keypoints, 0, (255, 0, 0),
                                 flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
 
# displaying the image with keypoints as the
# output on the screen
plt.imshow(output_image)
 
# plotting image
plt.show()

Producción:

Ejemplo 3: 

Este ejemplo es similar al anterior excepto que cambiamos el color a verde (0,255,0) y la bandera a cv2.DRAW_MATCHES_FLAGS_DEFAULT.

Python3

import cv2
import matplotlib.pyplot as plt
 
# reading image using the imread() function
imageread = cv2.imread('img1.jpeg')
 
# input image is converted to gray scale image
imagegray = cv2.cvtColor(imageread, cv2.COLOR_BGR2GRAY)
 
# using the SIRF algorithm to detect key
# points in the image
features = cv2.SIFT_create()
 
keypoints = features.detect(imagegray, None)
 
# drawKeypoints function is used to draw keypoints
output_image = cv2.drawKeypoints(imagegray, keypoints, 0, (0, 255, 0),
                                 flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT)
 
# displaying the image with keypoints as
# the output on the screen
plt.imshow(output_image)
 
# plotting image
plt.show()

Producción:

Publicación traducida automáticamente

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