python cv2 模块图片生成视频

python cv2 模块图片生成视频

事件起因

在工位上写bug的时候觉得窗外风景不错,iPhone自带的延时摄影会根据时长调整压缩比例,然后想下载一个app拍摄固定比例的延时视频。
slow shutter
这app只会拍照片而不会处理成延时视频,于是iPhone收获了1000张3秒间隔的连续的照片。

手机app也没有能处理这么多照片的,也懒得下adobe,搜了下python可以用,就试试
原理:将照片逐帧连续写入视频对象中,iphone照片导出来是连续的号码,直接遍历即可

import cv2
import os

img_root = 'F:/TempIphone/' #照片文件路径
fps = 60    #FPS
size=(1080,1920)    #图片、视频尺寸
fourcc = cv2.VideoWriter_fourcc(*'mp4v')
videoWriter = cv2.VideoWriter('F:/pygenvideo/dist/demofps60.mp4',fourcc,fps,size, True)

for img_file in os.listdir(img_root):
    frame = cv2.imread(img_root + img_file)
    videoWriter.write(frame)
    print(img_root + img_file + ' done!')
videoWriter.release()

这里调试了一会儿,以下是遇到的坑
1、size是输出视频的size,这里只要图片文件大小一致就行,fps就是每秒多少帧自己定。
2、搜到的文章说fourcc编码格式只支持avi,这里试了mp4可行,找到对应的编码格式和文件就没问题。
例:
cv2.VideoWriter_fourcc(‘P’,‘I’,‘M’,‘1’) = MPEG-1 codec
cv2.VideoWriter_fourcc(‘M’,‘J’,‘P’,‘G’) = motion-jpeg codec --> mp4v
cv2.VideoWriter_fourcc(‘M’, ‘P’, ‘4’, ‘2’) = MPEG-4.2 codec
cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘3’) = MPEG-4.3 codec
cv2.VideoWriter_fourcc(‘D’, ‘I’, ‘V’, ‘X’) = MPEG-4 codec --> avi
cv2.VideoWriter_fourcc(‘U’, ‘2’, ‘6’, ‘3’) = H263 codec
cv2.VideoWriter_fourcc(‘I’, ‘2’, ‘6’, ‘3’) = H263I codec
cv2.VideoWriter_fourcc(‘F’, ‘L’, ‘V’, ‘1’) = FLV1 codec

3、videoWriter对象可以使用 imshow(“example”,frame(帧对象)) 来验证是否读取到了图片文件,frame 帧对象也可以print frame.shape 输出图像大小。
4、imread这里使用的是绝对路径,最开始因为使用了相对路径,imshow倒是能show出来,就是写不进视频文件里导致输出文件只有十几kb,折腾了好一会儿。
5、os.listdir参数一定得是文件夹

最后成功输出了75m的视频,且可以自己调整帧率,很方便,然后再弄回iPhone发给女票显摆。
以上,萌新记录

参考链接:
1: https://blog.csdn.net/TionSu/article/details/81356006
2: https://blog.csdn.net/weixin_42984932/article/details/108078295
3: https://blog.csdn.net/weixin_36670529/article/details/100977537
4: https://www.e-learn.cn/topic/3267838

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值