Python 执行下面的代码i';我得到这个';类型错误:img不是数字元组';

Python 执行下面的代码i';我得到这个';类型错误:img不是数字元组';,python,python-2.7,opencv,image-processing,Python,Python 2.7,Opencv,Image Processing,我得到的错误是: import cv2 ram_frames=30 cam = cv2.VideoCapture(0) def get_image(): cap = cam.read() return cap for i in xrange(ramp_frames): temp = get_image() image = get_image() cv2.imwrite('b

我得到的错误是:

    import cv2
    ram_frames=30
    cam = cv2.VideoCapture(0)
    def get_image():
          cap = cam.read()
          return cap
    for i in xrange(ramp_frames):
              temp = get_image()
    image = get_image()
    cv2.imwrite('bin/color.jpg',image)

我做的一切都是对的,我没有修改任何代码,当在一个单独的程序中执行时,它不会显示任何错误,但当在我的代码中运行时,它会显示错误。我复制的代码来自

您在复制时更改了代码。显然,
cam.read()
返回一个元组。从文件中:

File "C:\modules\imlib.py", line 1035, in __init__
    self.imin = self.WinWebCam()
  File "C:\modules\imlib.py", line 1125, in WinWebCam
    cv2.imwrite('bin/color.jpg',image)
TypeError: img is not a numerical tuple
您将返回
retval
image
的整个元组,而示例仅返回其第二部分(图像)。因此,第9行中的
image
变量包含由
read()
返回的完整元组,而示例仅返回其第二部分
imwrite
然后失败,因为它不希望将元组作为参数

尝试如下更改代码:

Python: cv2.VideoCapture.read([image]) → retval, image
或者,甚至更好

def get_image():
      _, cap = cam.read()
      return cap
此外,第2行中的变量
ramp\u frames
拼写错误为
ram\u frames

如果有np.any(初始值==None): #你的代码 这肯定对你有用。此代码中的错误,因为initial被视为numpy数组


在我的程序中,我用None初始化了initial

,虽然您的修复应该可以,但您的解释不正确。错误状态:img不是数字元组。图像应该是一个数字元组,他的输入不是,因为它是一个布尔值。cam.read()返回一个表示成功的布尔值和一个图像(预期的数字元组)。不,他将元组输入到
imwrite
,这就是问题所在。该错误表示参数的类型不正确(
TypeError
)。这是什么类型的错误?如果他把一个元组放进去,为什么错误消息会说img不是一个元组呢?试着运行以下代码:
def VideoCapture(n):返回True,“IMGObjectSubstitute”;def get_image():cap=VideoCapture(0);回流盖;打印get_image()
(很抱歉,代码示例在注释中无法正常工作)。我的python知识有限。我认为它的工作原理与Lua相同。图像实际上是一个数字元组,至少在大多数情况下是这样。所以这是有道理的:)我不知道元组在python中实际上是一个特殊的东西。你甚至没有在第2行找到你的打字错误。在这里发布之前,请仔细阅读您的代码。你可以很容易地自己发现这个错误。现在你不会有那种对学习如此重要的成功感。你放弃了这个机会,因为你很懒:)
def get_image():
    return cam.read()[1]