Nous avons des remplissages rectangulaires, des cercles et des ellipses remplissant opencv, mais n'importe qui peut-il dire comment remplir un triangle dans une image en utilisant opencv, python.
La solution la plus simple pour remplir une forme triangulaire est d'utiliser la fonction de tracé de contour dans OpenCV. En supposant que nous connaissons les trois points du triangle comme "pt1", "pt2" et "pt3":
import cv2
import numpy as np
image = np.ones((300, 300, 3), np.uint8) * 255
pt1 = (150, 100)
pt2 = (100, 200)
pt3 = (200, 200)
cv2.circle(image, pt1, 2, (0,0,255), -1)
cv2.circle(image, pt2, 2, (0,0,255), -1)
cv2.circle(image, pt3, 2, (0,0,255), -1)
Nous pouvons mettre les trois points dans un tableau et dessiner comme un contour:
triangle_cnt = np.array( [pt1, pt2, pt3] )
cv2.drawContours(image, [triangle_cnt], 0, (0,255,0), -1)
cv2.imshow("image", image)
cv2.waitKey()
Vous pouvez dessiner un polygone puis le remplir, comme l'a dit @ZdaR.
# draw a triangle
vertices = np.array([[480, 400], [250, 650], [600, 650]], np.int32)
pts = vertices.reshape((-1, 1, 2))
cv2.polylines(img_rgb, [pts], isClosed=True, color=(0, 0, 255), thickness=20)
# fill it
cv2.fillPoly(img_rgb, [pts], color=(0, 0, 255))
# show it
plt.imshow(img_rgb)