在看完文档后,我完全不明白为什么我不能用OpenCV绘制椭圆。
首先我使用CV 2.4.9
>>> cv2.__version__
'2.4.9'
>>>
其次,我尝试使用以下代码:
>>> help(cv2.ellipse)
Help on built-in function ellipse in module cv2:
ellipse(...)
ellipse(img, center, axes, angle, startAngle, endAngle, color[, thickness[,
lineType[, shift]]]) -> None or ellipse(img, box, color[, thickness[, lineType
]]) -> None
我的椭圆如下所示:
cx,cy = 201,113
ax1,ax2 = 37,27
angle = -108
center = (cx,cy)
axes = (ax1,ax2)
cv2.ellipse(frame, center, axes, angle, 0 , 360, (255,0,0), 2)
但是,运行该程序会得到以下结果
>>> cv2.ellipse(frame,center,axes,angle,0,360, (255,0,0), 2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: ellipse() takes at most 5 arguments (8 given)
>>>
帮忙?
编辑:
我想用下面的内容作为框架
cap = cv2.VideoCapture(fileLoc)
frame = cap.read()
显然,可以通过使用以下代码修复此问题
pil_im = Image.fromarray(frame)
cv2.ellipse(frame,center,axes,angle,0,360,(255,0,0), 2)
pil_im = Image.fromarray(raw_image)
pil_im.save('C:/Development/export/foo.jpg', 'JPEG')
5条答案
按热度按时间63lcw9qa1#
我有同样的问题,我解决了它。我的第一行代码,我不能运行它是:
我发现轴(以及中心)必须是一个整数元组,而不是浮点数。因此下面的行是确定的!
我认为你应该采取其他值的是正确的格式。
以下是OpenCV网站的链接:http://answers.opencv.org/question/30778/how-to-draw-ellipse-with-first-python-function/
oyjwcjzk2#
下面是我的iPython会话-它看起来工作得很好:
这一做法奏效了,并产生了以下结果:
所以,有点奇怪......也许有什么东西在你导入
cv2
模块的方式?或者(更有可能)
frame
对象的类型/结构是什么?frebpwbc3#
实际上,如果从0°到360°绘图,可以使用浮点数,方法是使用单个椭圆参数调用函数:
或在一行程序中:
如果您想添加startAngle和stopAngle,这是行不通的。
cl25kdpy4#
对我有用
zzzyeukh5#
只尝试打印输入参数,并检查它们的形状、格式和dtype是否与OpenCV文档相同。在发现其中一个参数有问题后,为我修复了这个问题。