(1)读取文件:
video = cv.VideoCapture('video.avi') # 读取视频文件
(2)分帧读取视频:
ret,frame = video.read()
注:参数ret为布尔值True或者False,代表有没有读取到图片。第二个参数frame表示截取到一帧的图片,即返回的视频帧,可以利用cv.imwrite()保存帧。
(3)对每一个帧图像进行保存:
cv.imwrite('D:\\save\\'+str(i)+'.png',frame)
看下面的完整程序
import cv2 as cv #截图图像 def cutVideo(): i = 0 video = cv.VideoCapture('video.avi') # 读取视频文件 while(True): ret,frame = video.read() cv.imshow('video',frame) c = cv.waitKey(50) if c == 27: break i=i+1 if i%5==0: cv.imwrite('D:\\save\\'+str(i)+'.png',frame) cutVideo() cv.destroyAllWindows()
注:cv.waitKey()表示等待的时间,时间单位为毫秒(1秒=1000毫秒)
(1)如果设置waitKey(0),则表示程序会无限制的等待用户的按键事件
(2)如果设置waitKey(10),则表示程序会等待10毫秒,继续运行
(3)如果设置c = waitKey(0),则会返回用户按下键对应的ASCII码。比如:
while True: if waitKey(100)==27: break 在这个程序中,我们告诉OpenCv等待用户触发事件,等待时间为100ms,如果在这个时间段内, 用户按下ESC(ASCII码为27),则跳出循环,否则,继续循环 while True: if waitkey(1000)==ord('q'): break 我们告诉OpenCv等待用户触发事件,等待时间为1000ms,如果在这个时间段内, 用户按下'q',则跳出循环,否则,则跳出循环