在学习opencv第二章中例题2-2中有个课后问题,
即滚动条实时移动。
发现如下问题,如果每一帧都同步的话,会导致不流畅,所以设置成没跑了50帧才同步,具体原因待解决。
现代码如下
#include "stdafx.h"
#include"opencv243.h"
using namespace std;
int g_Pos=0;
int num=0;
CvCapture* g_Capture=NULL;
void CallBackTrackBarSlide(int pos)
{
cvSetCaptureProperty(g_Capture,CV_CAP_PROP_POS_FRAMES,pos);
g_Pos=pos;
}
int _tmain(int argc, _TCHAR* argv[])
{
cvNamedWindow("Demo",CV_WINDOW_AUTOSIZE);
g_Capture=cvCreateFileCapture("C:\\Users\\sony\\Desktop\\opencv.avi");
int totalFrames= (int)cvGetCaptureProperty(g_Capture,CV_CAP_PROP_FRAME_COUNT);
if(totalFrames!=0)
{
cvCreateTrackbar("TrackBar","Demo", &g_Pos,totalFrames,CallBackTrackBarSlide);
}
IplImage* frame;
while(1)
{
frame=cvQueryFrame(g_Capture);
if(!frame)break;
cvShowImage("Demo",frame);
char c=cvWaitKey(30);
if(c==27) break;
g_Pos++;
num++;
if(num==50)
{
cvSetTrackbarPos("TrackBar","Demo", g_Pos);
num=0;
}
}
cvReleaseCapture(&g_Capture);
cvDestroyWindow("Demo");
return 0;
}