如何修改cv2视频抽帧代码将帧存入数组而非写入Colab会话文件
代码修改方案
核心修改点
- 提前初始化空的
frames列表用于存储提取到的帧数据 - 删除原代码中
cv2.imwrite写入本地文件的逻辑,替换为将读取到的image对象追加到frames列表中 - 原
count计数变量如果没有后续特殊使用需求可直接省略
修改后完整代码
import cv2 vidcap = cv2.VideoCapture('video.mp4') frames = [] # 存储所有提取帧的数组 frameRate = 0.5 # 每隔0.5秒捕获1帧 sec = 0 def getFrame(sec): vidcap.set(cv2.CAP_PROP_POS_MSEC, sec * 1000) hasFrames, image = vidcap.read() if hasFrames: frames.append(image) # 将帧追加到数组,替代写入本地存储 return hasFrames success = getFrame(sec) while success: sec = round(sec + frameRate, 2) success = getFrame(sec)
补充说明
所有帧提取完成后,
frames列表中每个元素都是标准的OpenCV图像格式(numpy数组),可以直接传入后续的处理逻辑使用。
内容的提问来源于stack exchange,提问作者AJ_27
相关产品推荐
相关产品推荐

