web-dev-qa-db-ja.com

opencvでの三角形の塗りつぶし

長方形の塗りつぶし、円と楕円の塗りつぶしはopencvにありますが、opencv、pythonを使用して画像に三角形を塗りつぶす方法はだれでも言うことができます。

7
Hariprasad

三角形を塗りつぶす最も簡単な解決策は、OpenCVで輪郭描画機能を使用することです。三角形の3つの点が「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)

3つのポイントを配列に入れ、輪郭として描画できます。

triangle_cnt = np.array( [pt1, pt2, pt3] )

cv2.drawContours(image, [triangle_cnt], 0, (0,255,0), -1)

cv2.imshow("image", image)
cv2.waitKey()

これが出力画像です。乾杯。 Triangle Filling

10
Howard GENG

@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