我们在opencv中有矩形填充,圆和椭圆填充,但任何人都可以说如何使用opencv,python填充图像中的三角形。
填充三角形的最简单的解决方案是在OpenCV中使用绘制轮廓功能。假设我们知道三角形的三个点为“pt1”,“pt2”和“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)
我们可以将三个点放入一个数组中并绘制成轮廓:
triangle_cnt = np.array( [pt1, pt2, pt3] )
cv2.drawContours(image, [triangle_cnt], 0, (0,255,0), -1)
cv2.imshow("image", image)
cv2.waitKey()
你可以画一个多边形,然后填充它,就像@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)