web-dev-qa-db-fra.com

Remplissage de triangle en opencv

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.

7
Hariprasad

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()

Voici l'image de sortie. À votre santé. Triangle Filling

10
Howard GENG

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)
3
mirkancal