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

2024-09-28 17:26:59 发布

您现在位置:Python中文网/ 问答频道 /正文

OpenCV2 for python有两个函数


[功能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)


你能帮我吗?


Tags: 函数功能imgforcv2color椭圆center
3条回答

确保所有椭圆参数都int否则将引发“TypeError:elliple()最多接受5个参数(给定10个)”。有同样的问题,并将参数强制转换为int,修复了它。

请注意,在Python中,您应该先舍入数字,然后使用int(),因为int函数将剪切数字:

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

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

我猜你的“圆”或“大小”参数是错误的…它们应该是元组, (x,y)表示中心,(宽度,高度)表示轴

cv2.ellipse(ResultImage, (centerX,centerY), (width,height), 0, 0, 180, yellow, 2)

Pythondoesn't support multiple dispatch在默认情况下没有帮助:拥有两个同名但参数不同的函数不是pythonic。所以问题是:如何cv2猜测我们要调用的版本?我找不到任何明确的医生。

无论如何,在经历了opencv 3.0.0-beta和python3.4.2的相同问题之后,我终于发现在我的例子中,圆圈的一个点是float,尽管我使用8个参数运行官方示例代码,但出于某种原因,cv2默认为5-args函数。使用int修复了该问题,因此错误消息具有相当大的误导性。

我相信从Python 2转到3可能会在现有代码中带来这种混乱,因为Python 3中的integer divisions return floats

相关问题 更多 >