OpenCV による動画の連続再生

現在OpenCVを用いて1秒間の動画のを連続再生しているのですが、時間経過とともに、処理が遅くなってしまいます。

//処理ループの開始
for(;;){
//AVIファイルからフレーム画像を取り出す
if(NULL==(src_img=cvQueryFrame(capture))){
        capture = cvCaptureFromAVI(filename);
    src_img=cvQueryFrame(capture);
}

上記で再生の繰り返し処理を行っているのですが、解決方法がわかりません。

この問題の解決方法がわかる方がおられましたら、よろしくお願いいたします。

OpenCVによる動画の連続再生 -現在OpenCVを用いて1秒間の動画のを連続- その他(プログラミング・Web制作) | 教えて!goo

こうする.

#include <cv.h>
#include <highgui.h>

#pragma comment(lib,"cv.lib")
#pragma comment(lib,"cxcore.lib")
#pragma comment(lib,"highgui.lib")

int main(int argc, char **argv)
{
	const char *PLAYWINDOW = "連続再生";
	cvNamedWindow(PLAYWINDOW);
	const char *FILENAME = "c:/data/video/90frame.avi";
	CvCapture *capture = cvCaptureFromAVI(FILENAME);
	IplImage *image;
	int key;
	for(;;)
	{
		image = cvQueryFrame(capture);
		if ( image == NULL )
		{
			cvSetCaptureProperty( capture, CV_CAP_PROP_POS_FRAMES, 0.0 );
			continue;
		}
		cvShowImage ( PLAYWINDOW, image );
		key = cvWaitKey(1);
		if ( key == 27 ) // ESC
		{
			break;
		}
	}

	cvDestroyWindow(PLAYWINDOW);
	cvReleaseCapture(&capture);

	return 0;
}

VC++ 2008 でデバッグ実行した.PC は DELL Vostro 400 でクアッドコア・メモリ4 GB な環境.CPU 使用率は0.メモリ使用量は 8,576 KB だった.使用したのは次のファイル.速度低下は(たぶん)発生していない.

[90frame.avi]
256x256 24Bit 無圧縮 5.00fps 90f 7864.64kb/s
[RIFF(AVI1.0)] 00:00:18.000 (18.000sec) / 17,700,984Bytes

真空波動研Lite 081122 / DLL 081122

関係ないけど,Firefox 3.5 は今200 MB 食ってる.次いで Mcshield.exe が133 MB.

ウインドウを最小化すると1,152 KB,元のサイズに戻すと2,712 KB.