我正在嘗試使用 Python 和 opencv 從一個圓圈中切出一塊,這是代碼
首先,我構建了圓圈
layer1 = np.zeros((48, 48, 4))
cv2.circle(layer1, (24, 24), 23, (0, 0, 0, 255), -1)
res = layer1[:]
我得到了

然后,我在上面畫了一個小方塊
start_point = (24, 0); end_point = (48, 24); color = (255, 0, 0)
cv2.rectangle(res, start_point, end_point, color, -1)
這使

同樣,我在圓上畫了一個三角形
pt1 = (24, 0); pt2 = (48, 0); pt3 = (24, 24)
triangle_cnt = np.array( [pt1, pt2, pt3] )
cv2.drawContours(res, [triangle_cnt], 0, (255,0,0), -1)
這使

我可以沿著這條路畫一個更小的三角形,1/16、1/32等等。
我必須手動進行數學運算才能獲得頂點。
有沒有更聰明(更優雅)的方式來完成這項作業?
uj5u.com熱心網友回復:
import cv2
import numpy as np
# Colors (B, G, R)
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
# Create new blank 300x150 white image
width, height = 800, 500
img = np.zeros((height, width, 3), np.uint8)
img[...] = BLACK
center = (width//2, height//2)
axes = (200, 200) # axes radius, keep equal to draw circle.
angle = 0 #clockwise first axis
startAngle = 0
endAngle = 90
color = WHITE
img = cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color, thickness=-1)
cv2.imshow('image', img)
cv2.waitKey(-1)
您可以使用startAngle和endAngle更改白色部分的位置。
另一個選項是更改angle選項(例如更改為 -90 以逆時針旋轉)。
編輯以顯示不同的端角添加
img = cv2.ellipse(img, center, axes, angle, startAngle, endAngle/2, (255, 0, 0), thickness=-1)
img = cv2.ellipse(img, center, axes, angle, startAngle, endAngle/4, (0, 255, 0), thickness=-1)
img = cv2.ellipse(img, center, axes, angle, startAngle, endAngle/8, (0, 0, 255), thickness=-1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/420209.html
標籤:
上一篇:OpenCV中TermCriteria型別的區別:COUNT和MAX_ITER
下一篇:如何lcfirst每組詞?
