Dibuja un triángulo con centroide usando OpenCV

Requisito previo: Formas geométricas usando OpenCV

Dados tres vértices de un triángulo, escriba un programa Python para encontrar el centroide del triángulo y luego dibuje el triángulo con su centroide en una ventana negra usando OpenCV.

Ejemplos:

Input: (100, 200) (50, 50) (300, 100)
Output: (150, 116)

Bibliotecas necesarias:

OpenCV
Numpy

Enfoque:
cree una ventana negra con tres canales de color con una resolución de 400 x 300. Dibuje tres líneas que pasen por los puntos dados utilizando la función de línea incorporada de OpenCV. Creará un triángulo en la ventana negra. Encuentre el centroide del triángulo usando la siguiente fórmula simple.

 $$      (X, Y) =  \Bigg\{\frac{x1+x2+x3}{3}, \frac{y1+y2+y3}{3} \Bigg\}   $$

Dibuje este centroide en la ventana negra usando la función de círculo de OpenCV con grosor cero.

A continuación se muestra la implementación del enfoque anterior:

# Python3 code to draw a triangle and find centroid
  
# importing libraries
import numpy as np
import cv2
  
# Width and height of the black window 
width = 400
height = 300
  
# Create a black window of 400 x 300
img = np.zeros((height, width, 3), np.uint8)
  
# Three vertices(tuples) of the triangle 
p1 = (100, 200)
p2 = (50, 50)
p3 = (300, 100)
  
# Drawing the triangle with the help of lines
#  on the black window With given points 
# cv2.line is the inbuilt function in opencv library
cv2.line(img, p1, p2, (255, 0, 0), 3)
cv2.line(img, p2, p3, (255, 0, 0), 3)
cv2.line(img, p1, p3, (255, 0, 0), 3)
  
# finding centroid using the following formula
# (X, Y) = (x1 + x2 + x3//3, y1 + y2 + y3//3) 
centroid = ((p1[0]+p2[0]+p3[0])//3, (p1[1]+p2[1]+p3[1])//3)
  
# Drawing the centroid on the window  
cv2.circle(img, centroid, 4, (0, 255, 0))
  
# image is the title of the window
cv2.imshow("image", img)
cv2.waitKey(0)

Producción:

(150, 116)

Publicación traducida automáticamente

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