imageJ绘图 | 图片序列转GIF和视频

我来到你的城市 2021-08-16 09:26:26 阅读: 3888

GIF(Graphics Interchange Format),原义是“图像互换格式”,也是我们平时俗称的“动图格式”。GIF格式中存有多幅彩色图像,把存于一个文件中的多幅图像,按照一定速度逐幅读出并显示到屏幕上,就可构成一种最简单的动画。

这篇是为了解决一个日常遇到的问题:怎样利用ImageJ将一系列独立的图片组合并导出成GIF、AVI格式。反过来,如果有一个GIF和视频,怎么把它转成图片序列。

虽然有很多网站有GIF生成功能,但大多都有大小和长度限制,十分不方便。

ImageJ自带的基本功能,能够轻松地完成这一功能,而且不限制图片大小和时长。

例如怎么将下列50张连续的延时摄影图片:

转换为下面的GIF动图或者视频:


一、图片序列转GIF和视频

(1)导入图片序列,并组合成为一个Stack(Import -> Image Sequence)

将图片序列单独存在一个文件夹中,选中其中一张图片,然后打开:

然后弹出Sequence Options窗口,这里可以选择导入的图片大小、类型以及数量。注意这里要勾选Use virtual stack,这样图片序列就自动组合成为一个stack。

如果是一张一张拖入ImageJ而打开的,可以在(Image -> Stacks -> Images to Stack)中,将单独的图片组合成为一个Stack。

 

(2)设置动图导出参数(Image -> Stacks -> Animation -> Animation Options)

这里的Speed,指每秒多少帧,可以根据实际的拍摄帧数设置。

如果觉得总帧数太多,而又不需要太高的流畅度,可以减少帧数(Image -> Stacks -> Tools -> Reduce)

Reduction Factor指总帧数减少多少倍,例如当它为2时,即帧数减少为原来的一半。

 

(3)将Stack导出为动图-GIF、视频-AVI(File -> Save as)

导出格式选择GIF即为动图、AVI即为视频。


二、GIF和视频转图片序列

反过来,如果有一个GIF和视频,怎么把它转成图片序列。

(1)GIF转图片序列

直接将GIF图片拖入ImageJ打开,ImageJ会自动将它变成一个Stack:

可以利用(Image -> Stacks -> Stack to Images ) 或者Stack分离工具(Image -> Stacks -> Tools -> Stack Splitter),将Stack分解为图片序列后,再分别保存。

更简单的方法是直接(File -> Save as -> Image Sequence)

设置导出图片格式,命名(Digits指命名的数字长度)、起点等,即可直接将Stack保存为图片序列。

 

(2)视频转图片序列

常用的视频格式有AVI和MP4格式,但ImageJ默认只支持AVI视频格式,如果想打开MP4格式的视频,需要下载FFMPEG插件,可以参考之前的一篇文章:

导入视频后,ImageJ会自动将它变成一个Stack:

后面的操作和上(1)相同。

原文链接:https://zhuanlan.zhihu.com/p/64630418

邀请讨论

附件

{{f.title}} 大小 {{f.file_size}} 下载 {{f.count_download}} 金币 {{f.count_gold}}
{{item.nick_name}} 受邀请回答 {{item.create_time}}
{{item.refer_comment.nick_name}} {{item.refer_comment.create_time}}

附件

{{f.title}} 大小 {{f.file_size}} 下载 {{f.count_download}} 金币 {{f.count_gold}}
切换到完整回复 发送回复
赞({{item.count_zan}}) 踩({{item.count_cai}}) 删除 回复 关闭

小组最新话题

科研狗©2015-2024 科研好助手,京ICP备20005780号-1 建议意见

服务热线

178 0020 3020

微信服务号