En este artículo, vamos a discutir cómo dibujar una cruz en una imagen usando OpenCV-Python. Podemos dibujar una superposición de dos líneas una encima de otra para hacer una cruz en una imagen.
Para dibujar una línea en OpenCV, se utiliza la siguiente función.
Sintaxis: cv2.line(imagen, Punto inicial, Punto final, color, espesor)
Parámetros:
- Imagen: la imagen de origen en la que necesita dibujar la forma.
- punto de partida: las coordenadas de la imagen donde debe comenzar la línea. Que está representado por una tupla de coordenadas (eje x, eje y), básicamente la ubicación del píxel desde donde comenzar.
- endPoint: las coordenadas de la imagen donde debe terminar la línea. Que está representado por una tupla de coordenadas (eje x, eje y).
- Color: color de la línea dibujada en la imagen. Representado por valores de color BGR en una tupla en la que cada valor está entre 0 y 255
- (255,0,0) para AZUL
- (0,255,0) para VERDE
- (0,0,255) para ROJO]
- Grosor: grosor de la línea dibujada en píxeles.
Para dibujar una cruz en una imagen, primero debemos importar las bibliotecas necesarias,
Luego, lea la imagen en la que va a dibujar la forma y luego llame a la función de línea en OpenCV para dibujar una línea a través de las coordenadas dadas del eje x y el eje y, que son básicamente la ubicación del píxel inicial y final en el imagen. En OpenCV, por alguna razón, los planos x e y son directamente opuestos a los planos cartesianos normales que usamos. Donde el eje x está en el borde superior y el eje y está en el borde izquierdo de una imagen pero al revés, lo que implica el aumento en el eje x significa moverse hacia la derecha de la imagen y aumentar en el eje y significa moverse hacia abajo en la imagen.
Y para obtener el ancho y el alto de la imagen, debemos llamar a una función simple en OpenCV que devolverá la forma de la imagen y, a partir de eso, podemos obtener el ancho y el alto de la imagen y podemos usarlo en el programa. Simplemente llame al método .shape en la imagen para obtener las dimensiones.
El programa para dibujar una cruz en una imagen,
Python3
# Importing the necessary libraries import cv2 import numpy # Reading the image image = cv2.imread('image.png') # Getting the height and width of the image height = image.shape[0] width = image.shape[1] # Drawing the lines cv2.line(image, (0, 0), (width, height), (0, 0, 255), 5) cv2.line(image, (width, 0), (0, height), (0, 0, 255), 5) # Showing the image cv2.imshow('image', image) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Nota: puede mencionar el píxel inicial y final de su elección para hacer que la cruz sea pequeña y grande según sus necesidades
Cruzar en la transmisión de la cámara web en vivo
Ahora veamos cómo dibujar una imagen en un video desde una cámara en vivo de nuestra máquina. Para esto, primero debemos iniciar nuestra cámara web en vivo, y luego debemos capturar una imagen cada milisegundo y mostrarla entre sí para obtener un video de nuestra cámara web y luego agregar las líneas superpuestas en cada cuadro que capturamos desde el cámara web cada milisegundo para lograr el resultado.
Nota: Para obtener más información sobre el uso de una cámara web con OpenCV, consulte: Acceder a la cámara web mediante Python-OpenCV
Python3
# Importing the libraries import cv2 import numpy # Initiating the webcam vid = cv2.VideoCapture(0) # Capturing frames and showing as a video while(True): ret, frame = vid.read() # Getting the width and height of the feed height = int(vid.get(4)) width = int(vid.get(3)) # Drawing cross on the webcam feed cv2.line(frame, (0, 0), (width, height), (0, 0, 255), 5) cv2.line(frame, (width, 0), (0, height), (0, 0, 255), 5) # Showing the video cv2.imshow('LIVE', frame) # Making sure that we have a key to break the while loop # Which checks for the ascii value of the key pressed if cv2.waitKey(1) & 0xFF == ord('q'): break # At last release the camera vid.release() cv2.destroyAllWindows()
Producción:
Dibujar cruz seleccionando manualmente el área:
Podemos hacer muchas cosas con la base que acabamos de aprender. Podemos hacer maravillas en OpenCV. Ahora, por ejemplo, podemos crear a través simplemente seleccionando manualmente el área en una imagen. Todo lo que tenemos que hacer es seleccionar manualmente el área de la imagen donde necesitamos dibujar la cruz. Para esto, vamos a usar la función selectROI() de OpenCV que devolverá las coordenadas del rango de interés seleccionado en la imagen. Usando esas coordenadas podemos dibujar la cruz y mostrar la salida.
Sintaxis: cv2.selectROI(Window_name, source image)
Parámetro:
- window_name: nombre de la ventana donde se mostrará el proceso de selección.
- imagen de origen: imagen para seleccionar un ROI.
- showCrosshair: si se mostrará la verdadera cruz del rectángulo de selección.
- fromCenter: si el verdadero origen de la selección coincidirá con la posición inicial del mouse
Ejemplo:
Python3
# Importing the modules import cv2 import numpy # Reading the image image = cv2.imread('image.png') # Function to manually select the area r = cv2.selectROI("select the area", image) # Calculating the coordinates with the coordinates # returned by the function opposite_x = int(r[2]) - int(r[0]) bottom_y = int(r[1]) + (int(r[3]) - int(r[1])) # Drawing the cross by the calculated and # obtained coordinates cv2.line(image, (int(r[0]), int(r[1])), (int(r[2]), int(r[3])), (0, 0, 255), 5) cv2.line(image, (opposite_x, int(r[1])), (int(r[0]), bottom_y), (0, 0, 255), 5) # Showing the image cv2.imshow('image', image) cv2.waitKey(0) cv2.destroyAllWindows()
Producción:
Publicación traducida automáticamente
Artículo escrito por sanjaysdev0901 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA