opencv可以读取图像,自然也可以读取视频,因为视频就是图像在高速切换下的效果,所以我们可以一帧一帧去读取视频
import cv2
import numpy as np
import matplotlib as plt
video = cv2.VideoCapture('test.mp4') #读入视频流
# 检查是否读入正确
if video.isOpened():
open, frame = video.read() # read()方法一帧一帧地读取视频
# 这里我们用读取一帧来判断.open表示是否读入正确,是一个bool值
# frame 表示读取进来的第一帧的参数
else:
open = false
while open:
ret, frame = video.read() # 利用循环来读取每一帧的结果
if frame is None:
break
if ret == True:
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # 用于将每一帧的彩色图像变成灰度图像
cv2.imshow('result', gray)
# 下面表示展示图片,一帧一帧展示, 后边的27表示ESC退出键,我们可以按esc退出播放
if cv2.waitKey(10) & 0xff == 27:
break
video.release()
cv2.destroyAllWindows()
当然我们也可以把视频的每一帧去保存起来,利用imwrite()函数来读取
可以看到图片一帧一帧显示了出来, 就像是视频一样我们可以修改waitKey后边的数字,来调整视频的快慢