大家好,我是欧K。本期为大家介绍两个图片转GIF/视频的Python库--imageio/cv2,希望对你有所帮助。
先看看效果:
,时长00:06
1. 图片获取
1.1 导入模块
import os import time import requests import imageio import cv2 from PIL import Image
如果没有相应的包直接pip install xxx即可(推荐使用国内镜像安装)。
1.2 爬取每日气温图片
来源:中央气象台
以端午节(2021-06-14)全国逐时气温为例:
代码:
# 抓取图片 def get_pics(date, path): year = date.split('-')[0] mon = date.split('-')[1] day = int(date.split('-')[2]) for i in range(24): time.sleep(3) # 08:00-24:00 if i < 17: url = 'http://image.nmc.cn/product/{0}/{1}/{2:0>2d}/STFC/medium/SEVP_NMC_STFC_SFER_ET0_ACHN_L88_PB_{0}{1}{2:0>2d}{3:0>2d}0000000.jpg'.format( year, mon, day, i) img = requests.get(url) fiename = '{}{}h.png'.format(path, i + 8) with open(fiename, 'ab') as f: f.write(img.content) # 01:00-07:00 else: url = 'http://image.nmc.cn/product/{0}/{1}/{2:0>2d}/STFC/medium/SEVP_NMC_STFC_SFER_ET0_ACHN_L88_PB_{0}{1}{2:0>2d}{3}0000000.jpg'.format( year, mon, day - 1, i) img = requests.get(url) fiename = '{}{}h.png'.format(path, i - 17) with open(fiename, 'ab') as f: f.write(img.content)
效果:
2. 图片转GIF
2.1 读取本地图片
代码:
# 读取本地图片 def find_pics(date, path): # 读取文件夹 imagelist = os.listdir(path) gifname = '{}.gif'.format(date) videoname = '{}.avi'.format(date) # 排序 imagelist.sort(key=lambda x: int(x[:-5])) imagelist = [path + ff for ff in imagelist] #帧间隔 duration = 0.6 create_gif(imagelist, gifname, duration) create_video(imagelist, videoname)
注意文件排序。
2.2 生成.gif
代码:
# 生成gif def create_gif(imagelist, gifname, duration = 1.0): frames = [] for image_name in imagelist: frames.append(imageio.imread(image_name)) # 保存gif imageio.mimsave(gifname, frames, 'GIF', duration=duration)
效果:
3. 图片转视频
3.1 VideoWriter()
VideoWriter()的参数有filename, fourcc, fps, frameSize, isColor。
- filename:需要生成的视频的名字
- fourcc:用于压缩框架的解码器的4位编码
- fps:每秒的视频帧数
- frameSize:视频画面的尺寸(这里需要与用于合成视频的图片尺寸一致)
- isColor:如果该位值为Ture,解码器会进行颜色框架的解码,否则会使用灰度进行颜色架构(该功能仅支持在Windows系统中使用)
3.2 生成.avi 代码:
# 生成video def create_video(imagelist,videoname): image = Image.open(imagelist[0]) fourcc = cv2.VideoWriter_fourcc(*"MJPG") cap_fps = 1 video = cv2.VideoWriter(videoname, fourcc, cap_fps, image.size) for filename in imagelist: img = cv2.imread(filename) video.write(img) video.release()
效果:
也可自定义图片转换:
完。
END
以上就是本期为大家整理的全部内容了,赶快练习起来吧,喜欢的朋友可以点赞、点在看也可以分享让更多人知道