CvCapture *pCaption=NULL;
int g_value=0;
int framepos=0;
void onTrankbar(int pos)
{
printf("%d\r\n",pos);
cvSetCaptureProperty(pCaption,CV_CAP_PROP_POS_FRAMES,pos);
framepos=pos;
}
void main()
{
cvNamedWindow("avi",CV_WINDOW_AUTOSIZE);
//读取一个avi视频
pCaption=cvCreateFileCapture("1.avi");
//打开摄像头
//CvCapture *pCaption=cvCreateCameraCapture(0);
int framecount=cvGetCaptureProperty(pCaption,CV_CAP_PROP_FRAME_COUNT);
if (framecount>0)
{
//创建一个滚动条
cvCreateTrackbar("position","avi",&g_value,framecount,onTrankbar);
}
IplImage * pIpFrame;
while(1)
{
pIpFrame=cvQueryFrame(pCaption);
framepos++;//已经播放的帧总数
cvSetTrackbarPos("position","avi",framepos);//设置滚动条的位置
cvShowImage("avi",pIpFrame);
char c=cvWaitKey(1);
if (c==27)
{
break;
}
}
cvReleaseCapture(&pCaption);
cvDestroyWindow("avi");
}
cvcreateFileCaption()通过参数设置要读入的AVI文件,返回一个指向caption的指针。
cvQueryFrame()参数为cvCaption的指针,用来将下一帧视频文件载入内存,返回一个对应当前帧的指针。
cvcreateTrackBar()创建一个滚动条。
如果是打开摄像头那么,那么刚开始,需要加入延时,给摄像头一定的打开时间。不能立即判空。
onTrankbar() 为滚动条的响应函数,
cvGetCaptureProperty()获取视频属性
<pre name="code" class="plain">cvSetCaptureProperty() 设置视频属性