在OpenCV中动画图像序列

2 投票
2 回答
6035 浏览
提问于 2025-04-16 16:16

我想用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)

撰写回答