<Python,openCV>我如何使用cv2.ellipse?

use*_*393 11 python opencv

用于python的OpenCV2有2个功能


[功能1]

  • Python:cv2.ellipse(img,center,axes,angle,startAngle,endAngle,color [,thickness [,lineType [,shift]]])→None

[功能2]

  • Python:cv2.ellipse(img,box,color [,thickness [,lineType]])→None

我想用[功能1]

但是当我使用此代码时

cv2.ellipse(ResultImage,Circle,Size,Angle,0,360,Color,2,cv2.CV_AA,0)

它提高了

TypeError:ellipse()最多需要5个参数(给定10个)


你可以帮帮我吗?

Arn*_*d P 9

Python 默认情况下不支持多个调度这一事实在这里没有帮助:拥有两个具有相同名称但不同参数的函数不是pythonic.所以问题是:如何cv2猜测我们想要调用的版本?我找不到任何明确的文件.

无论如何,在遇到与opencv 3.0.0-beta和Python 3.4.2相同的问题之后,我终于发现在我的情况下,圆圈的一个点是a float,虽然我运行的是带有8个参数的官方示例代码,某些原因cv2默认为5-args函数.使用int修复问题,因此错误消息非常误导.

我相信从Python 2到3可能会在现有代码中带来这种混乱,因为整数除法在Python 3中返回浮点数.


Par*_*ari 5

确保所有椭圆参数均为int,否则会引发“ TypeError:ellipse()最多接受5个参数(给定10个)”。遇到相同的问题,并将参数转换为int,将其修复。

请注意,在Python中,您应该先将数字四舍五入,然后再使用int(),因为int函数会削减数字:

x = 2.7,int(x)将是2 而不是3


Tod*_*ova 3

我遇到了同样的错误,结果发现我没有将正确的最小参数数量 (7) 传递给该方法的 startAngle/endAngle 形式。就我而言,我缺少“角度”参数(椭圆的旋转角度),该参数位于 startAngle 和 endAngle 参数之前。

我的猜测是你的“Circle”或“Size”参数是错误的......它们应该是元组,(x,y)代表中心,(宽度,高度)代表轴

cv2.ellipse(ResultImage, (centerX,centerY), (width,height), 0, 0, 180, yellow, 2)
Run Code Online (Sandbox Code Playgroud)