其实鸽了这么长时间,本来就是想等着比赛结束之后一起总结,无奈今天突发状况,不小心把之前用的动图代码删了,就因为它我英语课都差点逃了,好在最终弄出来了,也算有失有得吧,本人也顿起倾诉欲望,写了这篇文章
直接制作gif动图(需下载imageio库,借鉴了某位大佬的代码)
import imageio
def create_gif(image_list, gif_name, duration=1.0):
name = []
# 把图片加进列表
for i in image_list:
name.append(imageio.imread(i))
# 保存为gif图
imageio.mimsave(gif_name, name, 'GIF', duration=duration)
def main():
image_list = ['jichuang10.jpg', 'jichuang11.jpg', 'jichuang12.jpg']
gif_name = "new20.gif"
duration = 1
create_gif(image_list, gif_name, duration)
if __name__ == '__main__':
main()
image_list: 放需要合成的图片
imageio.mimsave: 生成GIF动图
这里默认每张照片停顿时间是1秒
在main()函数中引用create_gif函数制作出动图
原照片(因为一直想拿哈利波特的剧照做人脸识别,所以这里用了以下三张照片)
制作效果:
这显然不太雅观,为了使不同大小的图像可以放在一起形成好看的动图,我们可以这样做:
用opencv进行图像裁剪
cv2.imread读取照片
cv2.imwrite将照片写入保存
ROI=img[0:100,0:100] 前一个是y坐标,后一个是x坐标
print(img.shape)感知图片像素大小
附上相关代码:
#制作gif动图
#加裁剪图像版
import imageio
import cv2
img1=cv2.imread('harry1.jpg',cv2.IMREAD_UNCHANGED)
img2=cv2.imread('harry2.jpg',cv2.IMREAD_UNCHANGED)
img3=cv2.imread('harry3.jpg',cv2.IMREAD_UNCHANGED)
print(img1.shape)
print(img2.shape)
print(img3.shape)
ROI1=img1[0:439,0:280]
ROI2=img2[0:439,150:430]
ROI3=img3[0:500,0:500]
cv2.imwrite('harry4.jpg',ROI1)
cv2.imwrite('harry5.jpg',ROI2)
cv2.imwrite('harry6.jpg',ROI3)
def create_gif(image_list, gif_name, duration = 1.0):
frames = []
for image_name in image_list:
frames.append(imageio.imread(image_name))
imageio.mimsave(gif_name, frames, 'GIF', duration=duration)
return
def main():
#这里放上自己所需要合成的图片
image_list = ['harry4.jpg', 'harry5.jpg', 'harry6.jpg']
gif_name = 'new20.gif'
duration = 1.5
create_gif(image_list, gif_name, duration)
if __name__ == '__main__':
main()



