大多数 cv2 元组参数在 python 3.5(windows 7)中不起作用

Posted

技术标签:

【中文标题】大多数 cv2 元组参数在 python 3.5(windows 7)中不起作用【英文标题】:most cv2 tuple arguments don't work in python 3.5 (windows 7) 【发布时间】:2018-02-16 08:55:22 【问题描述】:

我将一个项目从 python 2.7 切换到 3.5,现在我无法使用大多数需要元组的函数。

举个例子:

rgb = (255,0,0)
cv2.circle(img,(x, y),2,rgb,-1)

将返回“new style getargs format but argument is not a tuple”系统错误。

无论我如何输入表示圆圈颜色的元组,它总是会失败,即使我明确使用“tuple()”

我意识到这个问题并不新鲜,但可用的解决方案取决于包 (https://mail.python.org/pipermail/python-dev/2017-January/147091.html)。

当同一个脚本已经在使用 opencv 时,我只想在图像上添加点,而不必引入另一个库。

编辑:它在抱怨 x,y。这在 2.7 而不是 3.5 中起作用的原因尚不清楚,但专门将值声明为 tuple() 解决了问题

【问题讨论】:

根据***.com/questions/13225525/…您的问题也可能与枕头有关... 【参考方案1】:

在 Python 3.5 中,以下工作:

import numpy as np
import cv2


img = np.zeros((100, 100))  # Black image
rgb = (255, 0, 0)
cv2.circle(img, (50, 50), 2, rgb, -1)  # Plot centered on (50, 50)

你能在你的系统上试试这个,看看错误是否仍然存在?

(使用 Windows 10、Anaconda3、OpenCV 3.1.0)

如果这可行,您的问题可能与变量“img”的类型或其值的类型有关(请参阅我作为问题评论发布的链接)

【讨论】:

你是对的,被拒绝的元组是我的 x,y 而不是 rgb。谢谢

以上是关于大多数 cv2 元组参数在 python 3.5(windows 7)中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

关于“cameraMatrix”不是数字元组的cv2.stereocalibrate()错误

cv2.rectangle()、cv2.putText()和cv2.imwrite()用法

Opencv+Python:在Opencv中绘制函数

《中小学生Python编程入门指南》3.5 元组和集合

Python-OpenCV 中的绘图函数

Python不可变对象元组(tuple)详解