VideoCapture 裁剪的类型错误

TypeError with VideoCapture Crop

我一直在尝试使用 numpy 切片来裁剪视频帧,正如其他关于如何通过 OpenCV 裁剪视频的答案所建议的那样。我按如下方式设置我的实时视频捕获:

vs = VideoCapture(1)
vs.set(cv2.CAP_PROP_FRAME_WIDTH,100)
vs.set(cv2.CAP_PROP_FRAME_HEIGHT,100)

然后我创建了一个 while 循环来遍历视频流中的帧:

while True:
   frame = vs.read()
   cropped = frame[160:450, 170:470]

但是,当我 运行 脚本时,会返回一个错误,指出:

cropped = frame[160:450, 170:470]

TypeError: tuple indices must be integers or slices, not tuple

有人能解决这个问题吗?

您错误地调用了 cv2.VideoCapture.read() 函数。函数returns一个元组(ret_val, frame)。您将该元组保存为 frame 变量。您收到错误消息是因为您正在尝试拼接该元组。您可以使用 print(type(frame)).

来确认这一点

如果您将行更改为 ret_val, frame = vs.read(),则该功能将按您的预期运行并且图像已正确拼接