用OpenCV-Python读取摄像头写入视频文件


一、引言

在《 用Python制作灯光秀短视频》是基于Python+OpenCV+Moviepy实现的一个视频文件的生成,其实如果不需要音频时,这个生成也可以使用Python+OpenCV来实现,本文就基于上文基础之上介绍仅使用Python+OpenCV的实现。

二、实现思路

整体实现思路与上文的思路一致,只是在输出到视频时采用OpenCV的VideoWriter类类实现。

为了将视频输出到文件,通过VideoWriter_fourcc指定视频输出文件类型,采用OVideoWriter类的Open方法指定输出文件,通过write方法将一帧帧视频写入。

三、具体实现

其他实现内容与《 用Python制作灯光秀短视频》完全一致,只是制作视频文件的函数进行了修改。新建了一个函数buildVideoByCV代替原有的buildVideo用于制作视频文件,按指定格式生成一个新的视频文件,然后循环调用makeframe生成一帧帧图像写入视频文件中。

def buildVideoByCV():
    videoMake = cv2.VideoWriter()
    fourcc = cv2.VideoWriter_fourcc(*'MP4V') #
    fps = 12
    videoMake.open(r"F:\video\lightShowCV.MP4", fourcc, fps, (800,600))
    for t in range(65*fps):
        img = makeframe(t*1.0/fps)
        videoMake.write(img)
        print(f'\r视频制作进度:{(t*100.0)/(66*fps):4.2f}%',end='')
    videoMake.release()

上述函数构建后只需要调用buildVideoByCV函数即可完成视频制作。

3.6、视频效果

视频效果与上文完全一样:

用python做一个视频播放器 python怎么做视频_编程语言

四、小结

本文在《 用Python制作灯光秀短视频》基础上,介绍了用Python+OpenCV通过给定图片制作一个视频的实现思路、过程、关键函数等,有助于理解OpenCV的图像操作、生成视频的实现。用该方案实现的视频是无声的视频,因此如果要给视频添加声音,需要使用其他Python的音视频剪辑库。