OpenCVクラスVideoCaptureを使用して、ループで多くのビデオファイル(たとえば、200)を開くのに問題があります。以下に私のコードがあります。
具体的には、私のプログラムは特定の数のビデオ(通常は171-173)を開くことに成功しましたが、他のビデオを開くことができませんでした。(以下の例のように)常に同じファイルを開こうとしましたが、動作は同じです。
私の意見では、これはメモリリークの問題ではないはずです(実際にはメモリリークがありますが、合計で約50MBしか消費しません)。それぞれの動画を開くと、いくつかのスレッドも開かれ、決して閉じられないので、それらが蓄積するという事実に関連していると思います。しかし、これが本当の理由なのか、もしそうなら、それをどのように解決するのかはわかりません。
Visual Studioを使用してコンパイルし、Windows7OSを使用しています。
手がかりや解決策があれば教えてください。
string video_filename = "MyVideo.mp4";
for(int j=0; j<200; j++)
{
VideoCapture video(video_filename);
if(!video.isOpened())
{
cout << "Video #" << j << " could not be opened" << endl;
}
video.release(); // I've tried also to comment this out
}
コードが非常に単純なので、この問題を簡単に再現できると思います。