1、视频-》图片:我们可以读取视频的每一帧,然后将这每一帧保存成图像。由于视频会产生很多图片,我们可以用os.mkdir新建一个目录。视频读取失败结束。
import cv2 as cv
import numpy as np
import os
''' 定义一个捕获视频的类'''
cap=cv.VideoCapture("output.avi")
i=0
try :
'''创建目录,如果output目录存在,则产生一个错误 '''
os.mkdir("output")
except FileExistsError:
print(FileExistsError)
cnt=0
while(True):
'''读取视频,保存成图片 '''
ret,frame=cap.read()
if ret==True:
cv.imwrite("output/"+str(cnt)+".jpg",frame)
cv.imshow("output",frame)
cv.waitKey(2)
cnt+=1
else:
break
cv.destroyAllWindows()
2、图片-》视频:我们用vedioWriter将读入的每一张图片写入进视频,跟之前保存摄像头一样。如果有一次读入失败,则假设里面的读片均已读取,然后结束。
import cv2 as cv
'''设置编码方式 '''
fourrc=cv.cv2.VideoWriter_fourcc(*'XVID')
'''写视频的类'''
getvideo=cv.VideoWriter("output1.avi",fourrc,20.0,(640,480))
cnt=0
while(True):
img=cv.imread('output/'+str(cnt)+'.jpg')
try:
img.shape
except:
print('fail to read %d.jpg',cnt)
break
cv.imshow("frame",img)
getvideo.write(img)
print(cnt)
cnt=cnt+1