我试着用开CV,用cv2.elliple函数画一条弧
我试着读了同样的文档,但是我发现它非常混乱。在我的例子中,这是一个弧,所以轴的x和y是相同的,即半径。我的轴应该是什么,我应该在哪个方向计算起始角和结束角?旋转角度是多少?
给定的是函数-
cv2.ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[, lineType[, shift]]])
import cv2
import numpy as np
def create_blank(height, width, color):
blank_image = np.zeros((int(height), int(width), 3), np.uint8)
blank_image[:, :] = color
return blank_image
def draw_arc(image):
height, width = image.shape[0:2]
# Ellipse parameters
radius = 100
center = (width / 2, height/2)
axes = (radius, radius)
angle = 0
startAngle = 135
endAngle = 180
cv2.line(image, (0, 150), (300, 150), (0, 0, 0), 2, cv2.CV_AA)
cv2.line(image, (150, 0), (150, 300), (0, 0, 0), 2, cv2.CV_AA)
cv2.ellipse(image, center, axes, angle, startAngle, endAngle, (0, 0, 0), 2, cv2.CV_AA)
cv2.imshow("ellipse", image)
# Create new blank 300x150 white image
width, height = 300, 300
image = create_blank(width, height, color=WHITE)
draw_arc(image)
cv2.waitKey(0)
cv2.destroyAllWindows()
当startAngle为135,endAngle为180时,结果看起来像
而当startAngle为0且endAngle为90时,结果看起来像
所以这让人很困惑,圆弧在哪个方向旋转。在
你可以很容易地看到参数的变化如何影响椭圆的绘制。下面是一个简单的代码:
这将执行以下操作:
让我们来看看这些参数:
中心->;椭圆中心所在的x和y元组。在
轴->;第一轴和第二轴半径(总尺寸的一半)。第一个是水平的,如果角度是0,第二个是垂直的。在
角度->;整个椭圆的角度,即顺时针移动第一个轴
startAngle->;开始绘制圆弧的位置,例如0将与示例图像(在第一个轴上)类似,但如果角度有值,则0将以相同的方式旋转。在
endAngle->;在您想要停止绘制的地方,您可以看到我在示例中改变了它,以绘制一个增加的椭圆。在
如果你想要一个半径为50px的圆的弧,比如从60度到120度,但是逆时针方向(360度-开始/结束角度),你可以:
^{pr2}$如果你对他们中的任何一个有疑问,请随时发表评论
相关问题 更多 >
编程相关推荐