(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',则跳出循环,否则,则跳出循环

京公网安备 11010502036488号