[OpenCV-Python] 6 funciones de dibujo en OpenCV

Características de OpenCV-Python: II Gui en OpenCV

6 Funciones de dibujo en OpenCV

Objetivo
  • Aprender a usar OpenCV para dibujar diferentes figuras geométricas
  • Aprenderá estas funciones: cv2.line (), cv2.circle (), cv2.rectangle (), cv2.ellipse (), cv2.putText (), etc.

Código
Todas las funciones de dibujo anteriores deben establecer los siguientes parámetros:
  • img: La imagen que desea dibujar.
  • color: el color de la forma. Tome RGB como ejemplo, debe pasar una tupla, por ejemplo: (255,0,0) representa azul. Para imágenes en escala de grises, solo es necesario pasar el valor de la escala de grises.
  • grosor: el grosor de la línea. Si establece una cifra cerrada en -1, esta cifra se completará. El valor predeterminado es 1.
  • tipo de línea: tipo de línea, conexión 8, suavizado, etc. El valor predeterminado es 8 conexiones. cv2.LINE_AA es anti-aliasing, por lo que se ve muy suave.

6.1 Dibujo lineal

Para dibujar una línea, solo necesita indicarle a la función el inicio y el final de la línea. A continuación dibujaremos una línea azul desde la esquina superior izquierda hasta la esquina inferior derecha.

import numpy as np
import cv2

# Create a black image
img = np.zeros((512,512,3), np.uint8)

# Draw a diagonal blue line with thickness of 5 px
cv2.line(img,(0,0),(511,511),(255,0,0),5)

img

6.2 Dibujar un rectángulo

Para dibujar un rectángulo, debes indicarle a la función las coordenadas del vértice superior izquierdo y el vértice inferior derecho de la función. Esta vez diremos un rectángulo verde en la esquina superior derecha de la imagen.

cv2.rectangle(img,(384,0),(510,128),(0,255,0),3)

img

6.3 Dibujar un círculo

Para dibujar un círculo, solo necesita especificar las coordenadas del punto central y el radio del círculo. Dibujamos un círculo en el rectángulo superior.

cv2.circle(img,(447,63), 63, (0,0,255), -1)

img

6.4 Dibujar una elipse

Dibujar una elipse es más complicado, por lo que tenemos que ingresar algunos parámetros más. Un parámetro son las coordenadas de posición del punto central.
  El siguiente parámetro es la longitud del eje mayor y el eje menor. Ángulo en el que gira la elipse en sentido antihorario. El ángulo inicial y el ángulo final del arco de la elipse en el sentido de las agujas del reloj, si es de 0 a 360, es la elipse completa. Consulte cv2.ellipse () para obtener más información. El siguiente ejemplo consiste en dibujar una media elipse en el centro de la imagen.

cv2.ellipse(img,(256,256),(100,50),0,0,180,255,-1)

img

6.5 Dibujar polígonos

Para dibujar un polígono, debes señalar las coordenadas de cada vértice. Utilice las coordenadas de estos puntos para construir una matriz de tamaño igual al número de filas X1X2, y el número de filas es el número de puntos. El tipo de datos de esta matriz debe ser int32.
  Aquí dibuja un polígono amarillo con cuatro vértices.

pts = np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)
pts = pts.reshape((-1,1,2))
cv2.polylines(img,[pts],True,(0,255,255))

img

# Aquí el primer parámetro de remodelación es -1, lo que indica que la longitud de esta dimensión se calcula de acuerdo con las siguientes dimensiones.
Nota: Si el tercer parámetro es Falso, el polígono que obtenemos no está cerrado (el final no está conectado).
Nota: cv2.polylines () se puede utilizar para dibujar muchas líneas. Simplemente coloque la línea que desea dibujar en una lista y pase esta lista a la función. Cada línea se dibujará de forma independiente. Esto será más rápido que dibujar uno por uno con cv2.line ().

6.6 Agregar texto a las imágenes

Para dibujar texto en una imagen, debe establecer los siguientes parámetros:
  • el texto
  que desea dibujar
  • la posición que desea dibujar • tipo de fuente (consulte la documentación cv2.putText () para encontrar las fuentes compatibles)
  • tamaño de fuente
  • tamaño del texto Atributos generales como color, grosor, tipo de línea, etc. Para una mejor apariencia, se recomienda utilizar linetype = cv2.LINE_AA.
Dibuja un OpenCV blanco en la imagen.

font = cv2.FONT_HERSHEY_SIMPLEX
cv2.putText(img,'OpenCV',(10,500), font, 4,(255,255,255),2,cv2.LINE_AA)

img

Advertencia: El valor de retorno de todas las funciones de dibujo es Ninguno, por lo que img = cv2.line (img, (0,0), (511,511), (255,0,0), 5) no se puede utilizar.

Resultado
El siguiente es el resultado final, demuéstralo a través del conocimiento que aprendiste en las secciones anteriores.

winname = 'example'
cv2.namedWindow(winname)
cv2.imshow(winname, img)
cv2.waitKey(0)
cv2.destroyWindow(winname)

img
Para obtener más información, preste atención a la cuenta oficial:
img

Supongo que te gusta

Origin blog.csdn.net/yegeli/article/details/113405436
Recomendado
Clasificación