VideoCapture 裁剪的 TypeError

Posted

技术标签:

【中文标题】VideoCapture 裁剪的 TypeError【英文标题】:TypeError with VideoCapture Crop 【发布时间】:2019-06-19 15:46:04 【问题描述】:

我一直在尝试使用 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:元组索引必须是整数或切片,而不是元组

有人有解决这个问题的办法吗?

【问题讨论】:

【参考方案1】:

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

如果你把这行改成ret_val, frame = vs.read(),功能就如你所愿,图片拼接正确

【讨论】:

以上是关于VideoCapture 裁剪的 TypeError的主要内容,如果未能解决你的问题,请参考以下文章

在 Python OpenCV 中制作裁剪帧的视频

mediapipe 解决方案::FaceDetection

opencv视频操作基础---VideoCapture类

视频操作

OpenCV类VideoCapture构造函数中参数apiPreference的可选值及意义

cv2.videoCapture.release() 是啥意思?