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)
我得到的错误是:
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
我做的一切正确,我没有更改任何代码,在单独的程序中执行时,它没有显示任何错误,但是在我的代码中运行时,它显示了错误。我复制的代码来自此链接
您在复制时更改了代码。显然,cam.read()返回一个元组。从文档中:
cam.read()
Python: cv2.VideoCapture.read([image]) → retval, image
您正在返回的整个元组retval和image,而例如只返回它的第二部分(图像)。因此image,第9行中的变量包含返回的完整元组,read()而该示例仅返回其第二部分。imwrite然后失败,因为它不希望将元组作为参数。
retval
image
read()
imwrite
尝试像这样更改代码:
def get_image(): _, cap = cam.read() return cap
或者,甚至更好
def get_image(): return cam.read()[1]
此外,ramp_frames如ram_frames第2行所述,您对该变量进行了拼写错误。
ramp_frames
ram_frames