如何使用opencv显示连续帧

如何使用opencv显示连续帧,opencv,Opencv,我正在寻找一种使用OpenCV在一个窗口中显示连续帧的解决方案。我有一系列图像(001.jpg,002.jpg,003.jpg,等等),但没有视频。我必须在循环中显示它们 显示图像的标准代码为: IplImage* src = cvLoadImage("001.jpg"); cvNamedWindow("My pic"); cvShowImage("My pic",src); cvWaitKey(); 尝试使用OpenCV的XML/YAML持久化机制。编写要加载的图像路径列表,并使用循环读

我正在寻找一种使用OpenCV在一个窗口中显示连续帧的解决方案。我有一系列图像(
001.jpg
002.jpg
003.jpg
,等等),但没有视频。我必须在循环中显示它们

显示图像的标准代码为:

IplImage* src = cvLoadImage("001.jpg");
cvNamedWindow("My pic"); 
cvShowImage("My pic",src); 
cvWaitKey();

尝试使用OpenCV的XML/YAML持久化机制。编写要加载的图像路径列表,并使用循环读取这些路径并加载图像。在立体声校准示例中,使用了这样一个列表(有一个安装了OpenCV)。

如链接所示,一个选项是编写一个自动生成正确文件名的函数,例如:

void loadImage(IplImage *image, int number)
{
    // Store path to directory
    char filename[100];
    strcpy(filename, "/path/to/files");

    // Convert integer to char    
    char frameNo[10];
    sprintf(frame, "%03i", number);

    // Combine to generate path
    strcat(filename, frameNo);
    strcat(filename, ".bmp");

    // Use path to load image
    image = cvLoadImage(filename);
}
然后可以在已知数量的图像的循环中使用

IplImage *im;
for (int i = 0; i < nImages; ++i)
{
    loadImage(im, i);

    /*
        Do stuff with im
    */
}
IplImage*im;
对于(int i=0;i

另一种选择是研究。

@Chris代码的工作原理,我想添加一个更简单的例程

void loadImage()
{
int nImages = 6;
for (int i = 0; i < nImages; ++i) 
{
IplImage *image;
char filename[100];
strcpy(filename, "images/");

char frameNo[10];
sprintf(frameNo, "%03i", i);

strcat(filename, frameNo);
strcat(filename, ".jpg");

image = cvLoadImage(filename);
cvNamedWindow("pic");
cvShowImage("pic",image);
cvWaitKey(1000);
}
}
void loadImage()
{
int-nImages=6;
对于(int i=0;i
如果没有太多图片,可以将它们全部加载并存储在IplImage数组中。然后以循环的形式:for(i=0;i Hi,谢谢你的回答,但当我没有太多图片时,这实际上很有用。在我的情况下,我有1000多张图片,我必须处理。好吧,它们是以某种通用且易于自动记录的方式命名的吗?我有一个包含近600张图片的数据库,以便我了解问题。你没有手动写入。只需创建一个循环,生成这些文件的名称,并将这些名称写入xml文件。类似于:fs