Python ValueError:在OpenCV中解包的值太多(预期为2个)

Python ValueError:在OpenCV中解包的值太多(预期为2个),python,python-3.x,opencv,Python,Python 3.x,Opencv,这在我使用网络摄像头时有效,但当我使用ImageGrab时,会出现错误 import cv2 import numpy as np from PIL import ImageGrab while 1: cv2.waitKey(1) img = ImageGrab.grab(bbox=(0, 0, 1919, 1075)) img_np = np.array(img) frame = cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR)

这在我使用网络摄像头时有效,但当我使用ImageGrab时,会出现错误

import cv2
import numpy as np
from PIL import ImageGrab
while 1:
    cv2.waitKey(1)
    img = ImageGrab.grab(bbox=(0, 0, 1919, 1075))
    img_np = np.array(img)
    frame = cv2.cvtColor(img_np, cv2.COLOR_RGB2BGR)

    cv2.imshow("frame", frame)
    ret, frame1 = frame #error here


您可能会遇到此错误,因为frame是单个可解压数组,因此您试图将单个值赋给两个变量ret和frame1,因此您会遇到此错误。如果要将相同的值分配给ret和frame1,可以执行以下操作:-

ret,frame1=frame,frame

如果要拆分数组,可以使用numpy split函数。

这个答案毫无意义,尤其是您的代码行。请解释。@ChristophRackwitz在python中,当您以这种方式对变量执行赋值时,即x,y=value,那么python期望值是类似(a,b)的元组,因此它将第一个值,即a赋值给x,b赋值给y。在上述情况下,尝试分配的值不是该类型,因此无法以类似方式解包,从而导致错误。谈到代码部分ret,frame1=frame,frame意味着我们为ret和frame分配了相同的值,即frame的值。这并不能解决问题。为什么要编写
ret,frame1=frame
?你的变量有哪些值?在尝试了一段时间ret之后,frame1=frame是唯一能够比较两个帧的东西。完整的脚本检测最初使用网络摄像头的运动,但当我切换到屏幕捕获时,它停止工作