<Python, openCV> How I can use cv2.ellipse?
opencv2 for python有2个函数
[功能1]- python:cv2.椭圆(img,center,axes,angle,startangle,endangle,color[,thickness[,linetype[,shift]]])→无
[功能2]
- python:cv2.椭圆(img,box,color[,thickness[,linetype]])→无
我想使用[功能1]
但是当我使用这个代码时
cv2.ellipse(ResultImage, Circle, Size, Angle, 0, 360, Color, 2, cv2.CV_AA, 0)
号
它升起
TypeError: ellipse() takes at most 5 arguments (10 given)
号
你能帮我吗?
默认情况下,python不支持多个分派的事实在这里没有帮助:拥有两个同名但参数不同的函数不是pythonic。所以问题是:
总之,在经历了Opencv3.0.0-beta和python 3.4.2的相同问题之后,我终于发现在我的例子中,循环的一个点是
我相信从python 2到3可能会在现有的代码中带来这种混乱,因为整型除法在python 3中返回浮点数。
确保所有椭圆参数均为int,否则将引发"typeError:Ellipse()最多接受5个参数(给定10个)"。有同样的问题,将参数强制转换为int,修复了它。
请注意,在python中,应该首先对数字进行四舍五入,然后使用int(),因为int函数将剪切该数字:
x=2.7,int(x)为2而不是3
我遇到了同样的错误,结果发现我没有将正确的最小参数数(7)传递给方法的startangle/endangle形式。在我的例子中,我缺少了"角度"参数(椭圆的旋转角度),它位于startangle和endangle参数之前。
我猜你的"circle"或"size"参数是错误的…它们应该是元组,(x,y)表示中心,(宽度,高度)表示轴。
1 | cv2.ellipse(ResultImage, (centerX,centerY), (width,height), 0, 0, 180, yellow, 2) |
其他答案正确地指出,调用
下面是
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | def draw_ellipse( img, center, axes, angle, startAngle, endAngle, color, thickness=3, lineType=cv2.LINE_AA, shift=10): center = ( int(round(center[0] * 2**shift)), int(round(center[1] * 2**shift)) ) axes = ( int(round(axes[0] * 2**shift)), int(round(axes[1] * 2**shift)) ) cv2.ellipse( img, center, axes, angle, startAngle, endAngle, color, thickness, lineType, shift) |
号
这些参数应为整数,否则将引发类型错误