Prerequisite: Geometric shapes using OpenCV
Given three vertices of a triangle, write a Python program to find the centroid of the triangle and then draw the triangle with its centroid on a black window using OpenCV.
Examples:
Input: (100, 200) (50, 50) (300, 100) Output: (150, 116)
Libraries Needed:
OpenCV Numpy
Approach:
Create a black window with three color channels with resolution 400 x 300. Draw three lines which are passing through the given points using the inbuilt line function of the OpenCV. It will create a triangle on the black window. Find the centroid of the triangle using the following simple formula.
 Â
Draw this centroid on the black window using circle function of OpenCV with zero thickness.
Below is the implementation of the above approach:
# 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 ) |
Output:
(150, 116)