aviファイルをキャプチャして処理しています。私のコードはしばらく問題なく動作していましたが、ビデオの最後のフレームがキャプチャされた後も停止していないようです。代わりに、ビデオの先頭にループバックし続けます。なぜこれが起こっているのか理解できず、Eclipse や OpenCV に関して何か変更があったとは考えられません。同じビデオを使用して Ubuntu PC で同じコードを試しましたが、問題なく動作します。OSやアプリの再インストールも試しましたが、成功しませんでした。
サンプルコード:
#include "opencv2/opencv.hpp"
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat frame;
VideoCapture capture;
const string inputVideo = argv[1];
char buff[PATH_MAX];
getcwd( buff, PATH_MAX );
std::string fileName( buff );
fileName.append("/");
fileName.append(inputVideo);
capture.open(inputVideo);
while(true)
{
capture >> frame;
if(!frame.empty())
{
imshow("frame", frame);
}
else
{
printf(" --(!) No captured frame -- Break!");
break;
}
int key = waitKey(10);
if((char)key == 'c')
{
break;
}
}
return 0;
}
これを Mac OS X (10.8.2)、Eclipse Juno、および OpenCV 2.4.3 で実行しています。
アドバイスやコメントをお待ちしております。前もって感謝します