我以 1 秒为间隔从网络采集图像。我想找到一种方法来创建这些图像的视频。由于相机是静止的,并且图片可能长时间不会改变,所以我希望能够丢弃本质上重复的图像,以便缩短生成的视频。
答案1
这将获取目录中的所有 .jpeg 文件并创建 AVI 视频。
mencoder "mf://*.jpeg" -mf fps=20 -o out.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=640
检测“重复”图像会增加一些复杂性。该findimagedupes
程序可能是一种选择。
答案2
为了分析静态图像之间的相似性,您可以使用包compare
中的命令imagemagick
。您可能需要一个-metric
参数。我个人没有怎么使用它,但你可以阅读它这里:
-metric type
Output to STDERR a measure of the differences between images according
to the type given metric.
要制作视频,您也可以使用avconv
fromlibav
包执行此操作。它唯一可能的缺点是它要求所有文件按顺序命名,没有任何间隙,并且必须从 1 开始。您需要一个脚本来准备目录,然后才能运行命令。
顺序链接(脚本不是我写的)
#!/usr/bin/python
""" Create symlinks from a set of paths returned by glob for FFmpeg to read. Thanks to: http://programmer-art.org/articles/tutorials/ffmpeg-time-lapse
"""
import os
import glob
import sys
files = sorted(glob.glob("/home/txoof/temp/779OLYMP/*.JPG"))
outdir = "/home/txoof/temp/output/"
if not os.path.exists(outdir):
os.makedirs(outdir)
for i, f in enumerate(files):
os.symlink(f, os.path.join(outdir, "%06d.jpg" % (i + 1)))
您需要手动编辑此脚本中的目录,只需设置文件所在的目录以及链接所在的目录(可以是临时目录,然后将被删除)。
完成后,您将拥有一个包含以 000001.jpg 开头的文件的目录,您可以运行以下命令:
avconv -i /home/txoof/temp/output/%06d.jpg -c:v copy -an video.avi