视频的读取、显示与保存
函数 | 说明 |
---|---|
cap=cv.VideoCapture(index/path) | 创建一个视频捕获对象,index为摄像头索引,path为视频文件路径 |
cap.isOpened() | 检查视频捕获对象是否已初始化完成 |
ret, frame = cap.read() | 逐帧捕获视频 正确读取帧,ret为True,frame为每帧图像 |
out=cv.VideoWriter(filename, fourcc, fps, framesize,iscolor) | 创建视频写对象 filename:输出视频文件名 fourcc:视频编码格式,例如, cv.VideoWriter_fourcc(‘XVID’) cv.VideoWriter_fourcc(‘MJPG’) 若编码器代号为 -1,则运行时会弹出选择框 fps:创建的视频流的帧率,用浮点数表示,例如20.0 framesize:视频流的大小,用元组表示,例如(640,480) iscolor:是否使用彩色帧,用bool值表示 |
out.write(frame) | 逐帧保存视频 |
out.release() | 释放写对象 |
cap.release() | 释放捕获对象 |
一个栗子
从摄像头读取视频,显示在窗口中,按S键另存在当前目录并退出
import numpy as np
import cv2 as cv
cap = cv.VideoCapture(0)
# 定义编解码器并创建VideoWriter对象
fourcc = cv.VideoWriter_fourcc(*'XVID')
out = cv.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():
ret, frame = cap.read()
if not ret:
print("Can't receive frame (stream end?). Exiting ...")
break
out.write(frame)
cv.imshow('frame', frame)
if cv.waitKey(1) == ord('s'):
break
# 完成工作后释放所有内容
cap.release()
out.release()
cv.destroyAllWindows()