【发布时间】:2014-11-09 01:53:15
【问题描述】:
当我运行此代码并按键盘上的 Esc 键时,我无法退出 while 循环。 我在另一个程序中使用相同的代码(在 main() 函数中)并退出 while 循环。 我不在 main() 函数中使用下面的代码。它是由它在 main() 中使用的函数调用的。 我想停止处理视频捕获并做其他工作,我不想完全关闭程序。我只想每秒处理 2 帧,我该怎么做? (在opencv 2.4.6,windows7,vs2012中从视频或cam中捕获帧时) 请帮帮我。
void Demo::processVideo()
{
VideoCapture cap(this->videofile.c_str());
cout<<"Loading classifier...."<<endl;
MultiTrain mt;
mt.loadModel(("f:\dataset/eye_svm_model.xml"));
int fps=(int) cap.get(CV_CAP_PROP_FPS);
if(!cap.isOpened())
{
cout<<"problems with avi file"<<endl;
}
else
{
cout<<"Processing video...."<<endl;
Mat frame;
int k = 0,key1=0;
while(1)
{
//char c = WaitKey(15);
// if( c == 27 ) break;
cap>>frame;
int res = (int)mt.getPrediction(frame);
cout<<"Prediction for frame #"<<k<<" => "<<res<<endl;
this->predictions.push_back(res);
k++;
}
cap.release();
}
}
【问题讨论】:
-
请使用opencv的c++ api,不要使用过时的c。
-
我需要你的帮助。请帮助我
-
除非你改用 c++。
-
我改成 c++ 请帮帮我。
-
对于 2 fps,您需要等待 500 毫秒。但是 waitKey 仅在有一个 highgui 窗口时才有效(它正在等待该窗口中的按键)。如果你从不使用 namedWindow 或 imshow()(也许你有自己的 gui),waitKey() 将永远找不到任何东西。
标签: c++ c opencv visual-studio-2012 image-processing