首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

中年大叔学编程-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中有很多有趣的库来帮我们简化一下复杂的操作,希望我们在学习过程中能深入挖掘更多有趣、强大的类库。

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200626A0NCI600?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券