如何使用Python加载并处理.avi格式视频:观看及提取帧数组
用Python处理AVI视频:播放与提取帧数组
依赖安装
首先需要安装OpenCV库,执行以下命令:
pip install opencv-python
1. 播放AVI视频
使用OpenCV的VideoCapture类读取视频并逐帧显示,代码如下:
import cv2 # 初始化视频捕获对象,替换为你的视频路径 cap = cv2.VideoCapture("your_video.avi") # 检查视频是否成功打开 if not cap.isOpened(): print("无法打开视频文件") exit() # 循环读取并显示每一帧 while True: # ret表示读取是否成功,frame是当前帧的数组 ret, frame = cap.read() # 读取失败则退出循环(视频播放完毕) if not ret: break # 显示当前帧 cv2.imshow("Video Playback", frame) # 按下q键可提前退出播放 if cv2.waitKey(25) & 0xFF == ord('q'): break # 释放资源 cap.release() cv2.destroyAllWindows()
cv2.waitKey(25)控制播放帧率,25毫秒每帧对应约40FPS,可根据需求调整数值- 务必替换
your_video.avi为实际的视频文件路径
2. 获取视频的每一帧(数组形式)
通过OpenCV读取所有帧并存储到列表中,每一帧都是numpy数组(形状为(高度, 宽度, 通道数),通道顺序为BGR):
import cv2 cap = cv2.VideoCapture("your_video.avi") if not cap.isOpened(): print("无法打开视频文件") exit() frames = [] while True: ret, frame = cap.read() if not ret: break # 将当前帧添加到列表 frames.append(frame) cap.release() # 查看提取结果 print(f"共提取到 {len(frames)} 帧") if frames: print(f"单帧数据形状: {frames[0].shape}")
- 提取的帧可直接用于后续图像处理(比如转换为RGB格式、特征提取等)
- 若视频体积较大,建议逐帧处理而非全部存储,避免内存占用过高
内容的提问来源于stack exchange,提问作者Naman
相关产品推荐
相关产品推荐

