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()
,则该功能将按您的预期运行并且图像已正确拼接
我一直在尝试使用 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()
,则该功能将按您的预期运行并且图像已正确拼接