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.