【转载】每天进步一点点——在Windows平台下使用OpenCV将图片合成视频
【摘要】 在Windows平台下使用OpenCV将图片合成视频, 输入为图片存放的文件夹路径即可。支持设置视频编码格式,宽度,高度,帧数,以及是否简单的翻转图片。
原因:
因为某些原因,需要将处理完成的图片合成视频,大概3000张图片吧,开始想用现成的软件但没找到,干脆用OpenCV自己合成吧,初次尝试以失败告终,终于在看了N篇博客后,找到了一位大佬(Chen Yongfu)的代码(时间有点久,忘了在哪看到的了,所以暂没有给链接)。
环境:
Windows平台(Linux下没有测试过,可能也行,毕竟OpenCV是跨平台的,应该跟平台关系不大)
Opencv-Python版本 4.2.0.32
输入:
输入为图片存放的文件夹路径即可。通过搜过输入文件夹下图片后缀,比如“.jpg”来加载图片,写入视频,支持设置视频编码格式,宽度,高度,帧数,以及是否简单的翻转图片。
代码:
# -*- coding: utf-8 -*- """ Created on Thu Oct 17 20:09:07 2019 @author: Chen Yongfu """ import os import cv2 import time # 图片合成视频 def picvideo(path, size=(1920,1080), extension = '.jpg', fps=20, fcc='MJPG', isFlip = False, flipType=-1): ''' 本函数为读取图片生成视频的 需要保证图片为同格式,同尺寸,相同格式意味着要编码一致 path, 图像路径 size, 视频生成尺寸 fps, 幀速 fcc, 编码格式 视频编码参考: I420,无损压缩 MJPG DIVX XVID CV_FOURCC('P','I','M','1') = MPEG-1 codec CV_FOURCC('M','J','P','G') = motion-jpeg codec CV_FOURCC('M', 'P', '4', '2') = MPEG-4.2 codec CV_FOURCC('D', 'I', 'V', '3') = MPEG-4.3 codec CV_FOURCC('D', 'I', 'V', 'X') = MPEG-4 codec CV_FOURCC('U', '2', '6', '3') = H263 codec CV_FOURCC('I', '2', '6', '3') = H263I codec CV_FOURCC('F', 'L', 'V', '1') = FLV1 codec https://www.cnblogs.com/Akagi201/archive/2012/04/03/2430772.html isFlip flipCode,翻转模式:0 垂直翻转;1 水平翻转; -1 水平垂直翻转 ''' filelist = os.listdir(path) #获取该目录下的所有文件名 # 导出路径 file_path = path + '\\video_' + str(int(time.time())) + ".avi" # 不同视频编码对应不同视频格式和大小,压缩率 fourcc = cv2.VideoWriter_fourcc(*fcc) video = cv2.VideoWriter(file_path, fourcc, fps, size ) for item in filelist: if item.endswith(extension): # 判断图片后缀 item = path + '/' + item img = cv2.imread(item) img = cv2.resize(img, size) if isFlip: img = cv2.flip(img, flipType) cv2.imshow('video', img) cv2.waitKey(1) video.write(img) # 把图片写进视频 video.release() # 释放 cv2.waitKey(1)&0xFF cv2.destroyAllWindows() if __name__ == '__main__': picvideo(r'C:\Users\lenpveo\Downloads\train', (1280, 720))
注意要写你的路径,如果是linux下,路径格式可能不同,可自行搜索。
picvideo(r'你的路径', (1280, 720))
在合成视频的同时,会打开窗口显示视频,所以需要支持OpenCV开窗口才行,一般电脑都支持的,但在云服务中一般不支持,需要自己调整,删除开窗口代码即可。赶快运行试一下吧。
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)