部分情况下,我们利用python调取摄像头后,想要把录制的视频读入文件中保存起来,那么应该怎么做呢,具体请看代码:
import cv2
import os
cap = cv2.VideoCapture(0) #此处调用摄像头,默认调用编码为零的摄像头
flag,img= cap.read()
out_pic_src = '...../../b.avi'#定义文件路径及文件名
x = 640
y = 480
frame = np.zeros((x,y))#定义帧高及帧宽。
fourcc = cv2.VideoWriter_fourcc(*"XVID") #定义视频解码器
out = cv2.VideoWriter(out_pic_src, fourcc, 18.0, np.shape(frame))
#定义输入流,18.0代表视频播放速率,最后一个参数表示写入帧的大小。
#cv2.VideoWriter_fourcc('I', '4', '2', '0'),该参数是YUV编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('P', 'I', 'M', 'I'),该参数是MPEG-1编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')/(*'XVID'),该参数是MPEG-4编码类型,文件名后缀为.avi
#cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),该参数是Ogg Vorbis,文件名后缀为.ogv
#cv2.VideoWriter_fourcc('F', 'L', 'V', '1'),该参数是Flash视频,文件名后缀为.flv
if flag is not True:
print('camera error')
while True:
flag,img= cap.read()
img = cv2.resize(img,(x,y))#一定要记得对获取帧进行尺寸变换,等于定义的写入帧的尺寸
out.write(img)
cv2.imshow('video',img)
if cv2.waitKey(33) == 27:
break
cv2.destroyAllWindows()
这样我们就实现了对实时视频的写入。