在OpenCV中动画图像序列
我想用OpenCV和Python把从网络摄像头拍下的一系列图片(jpg格式)做成动画。我知道可以通过cv.CreateFileCapture和cv.QueryFrame来播放一个已经录制好的视频文件,但如果我有一堆静态图片放在一个文件夹里,这个该怎么做呢?
2 个回答
1
一种方法是把一系列的图片变成一个avi格式的电影。
writer = highgui.cvCreateVideoWriter('movie.avi', highgui.CV_FOURCC('M','P','E','G'), framerate, (width,height))
for i in range(len(images)):
highgui.cvWriteFrame(writer, images[i])
highgui.cvReleaseVideoWriter(writer)
2
你可以简单地在一个循环里使用 cvShowImage
来显示图像,然后用 cvWaitKey(delay)
来控制显示的时间,把延迟设置成适合你想要的帧率的值。
import glob
import opencv.highgui
highgui.cvNamedWindow('mahMovie')
# Assumes an ordered sequence of filenames (001.jpg, 002.jpg, etc)
for filename in sorted(glob.glob('./*.jpg')):
img = highgui.cvLoadImage(filename)
highgui.cvShowImage('mahMovie', img)
highgui.cvWaitKey(33)
highgui.DestroyWindow('mahMovie)