我正在捕获一个 avi 文件并对其进行处理。我的代码已经运行了一段时间没有问题,但现在它似乎在视频的最后一帧被捕获后并没有停止。相反,它会不断循环回到视频的开头。我不明白为什么会发生这种情况,我想不出关于 Eclipse 或 OpenCV 的任何变化。我在我的 Ubuntu 电脑上用相同的视频尝试了相同的代码,它可以正常工作。我什至尝试过重新安装操作系统和应用程序都没有成功。
示例代码:
#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 上运行它。
任何建议或意见表示赞赏。提前致谢