我一直在尝试使用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]
但是,当我运行脚本时,返回错误,指出:
已裁剪=帧[160:450,170:470]
TypeError:元组索引必须是整数或切片,而不是元组
有人对此问题有解决方案吗?
答案 0 :(得分:1)
您错误地调用了cv2.VideoCapture.read()
函数。该函数返回一个元组(ret_val, frame)
。您正在将该元组另存为frame
变量。由于尝试拼接该元组,因此出现错误。您可以使用print(type(frame))
进行确认。
如果将行更改为ret_val, frame = vs.read()
,该功能将按预期工作并且图像已正确拼接