python 输入图片 输入视频_中年大叔学编程-Python简单实现视频/图片互转

这次我们来做一件有意思的事情,把视频转成图片,再把图片转为视频。

在开始之前,我们先准备一个十几秒的短视频吧,可以自己拍,也可以自己剪切,接下来,安装一个两个组件:

imageio

opencv-python

视频转图片

from cv2 import cv2

cap = cv2.VideoCapture("D:/demo.mp4") #打开视频文件

ret = cap.isOpened() # 是否成功打开

frame_count = 0

while ret:

frame_count += 1

ret, frame = cap.read() # 按帧读取视频,第一个返回值表示是否正确读取,第二个返回值是当前帧的图片

if ret :

cv2.imwrite('F:/pic/%d.png' % frame_count, frame)

cap.release() #释放视频

图片转视频

from cv2 import cv2

import os

imglist = os.listdir('F:/pic/')

fps = 24 #视频每秒24帧

size = (1284, 720) #需要转为视频的图片的尺寸

video = cv2.VideoWriter("png.avi", cv2.VideoWriter_fourcc('I', '4', '2', '0'), fps, size)

for img in imglist:

tempimg = cv2.imread('F:/pic/%s'%img)

video.write(tempimg)

video.release()

图片转GIF动态图片

将图片转成GIF的话,我们需要借助imageio这个组件,将图片转换为每秒多帧播放的GIF图片

import imageio

import os

imglist = os.listdir('F:/pic/')

frames = []

for img in imglist:

frames.append(imageio.imread('F:/pic/%s'%img)) # 组装图片

imageio.mimsave('movie.gif', frames, 'GIF') #保存为gif图片

GIF图片转PNG图片

from PIL import Image

import os

im = Image.open('movie.gif')

while True:

img = im.tell() # 获取当前帧索引

im.save('F:/pic1/'+str(img)+'.png') #保存当前图片

if img>=im.n_frames-1:

break

im.seek(img+1) #获取下一帧的图片

print('解析完成')

我理解的视频和gif都是通过N多张图片在每秒插入的图片帧来形成的,所以这里简单的练习了一下视频转图片、图片转gif的功能,其实在python中有很多有趣的库来帮我们简化一下复杂的操作,希望我们在学习过程中能深入挖掘更多有趣、强大的类库。

我只是记录我的学习过程,由于书读的少,可能很多地方表述或者是理解得不对,请轻喷并指正。

内容来自腾讯新闻

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值