现在工程环境下配置好参数,再如下面代码

 

  1. #include "stdafx.h"   
  2.   
  3. // CV模块中包含了图像处理、图像结构分析,运动描述和跟踪,模式识别和摄像机标定  
  4. #include"cv.h"   
  5.   
  6. //包含了图像和视频的输入/ 输出   
  7. #include "highgui.h"   
  8.   
  9. // 用来标定滚动条当前的位置   
  10. int g_Pos = 0;  
  11.   
  12. // 将打开的视频文件作为一个全局变量使用   
  13. CvCapture* g_Capture = NULL;  
  14.   
  15. // 当拖动滚动条后,会回调这个函数   
  16. // 同时会将当前滚动条的位置以32位形式传递过来   
  17. void CallBackTrackBarSlide(int pos)  
  18. {  
  19.     // 这里便是重新设定视频文件当前播放的帧   
  20.     cvSetCaptureProperty(g_Capture,CV_CAP_PROP_POS_FRAMES,pos);  
  21.     g_Pos = pos;  
  22. }  
  23.   
  24. int main(int argc, char** argv)  
  25. {  
  26.     // 建立一个名字加vedio的窗体   
  27.     cvNamedWindow("vedio",CV_WINDOW_AUTOSIZE);  
  28.     // 根据参数打开指定的视频文件   
  29.     g_Capture = cvCreateFileCapture("vedio.avi");  
  30.   
  31.     // 获得总的帧数   
  32.     int totalFrames =   
  33.         (int)cvGetCaptureProperty(g_Capture,CV_CAP_PROP_FRAME_COUNT);  
  34.     if(totalFrames != 0)  
  35.     {  
  36.         //创建滚动条,在这里指定了滚动条拖动后的回调函数   
  37.         cvCreateTrackbar("TrackBar","vedio",  
  38.             &g_Pos,totalFrames,CallBackTrackBarSlide);  
  39.     }  
  40.   
  41.     IplImage* frame;  
  42.     // 循环地顺序遍历所有的帧   
  43.     while(1)  
  44.     {  
  45.         // 获取当前帧的下一个帧,并将其加载到内存中  
  46.         frame = cvQueryFrame(g_Capture);  
  47.         if(!frame)  
  48.         {  
  49.             break;  
  50.         }  
  51.   
  52.         cvShowImage("vedio",frame);  
  53.         char chKeyCode = cvWaitKey(30);  
  54.   
  55.         if(chKeyCode == 27)  
  56.         {  
  57.             break;  
  58.         }  
  59.   
  60.         g_Pos++;  
  61.   
  62.         // 当播放完200个帧的时候才触发滚动条滚动   
  63.         /*if(g_Pos%200 == 0) 
  64.         { 
  65.             cvSetTrackbarPos("TrackBar","vedio",g_Pos); 
  66.         } 
  67.         */  
  68.          
  69.         // 每播放一个帧便触发滚动条滚动   
  70.         cvSetTrackbarPos("TrackBar","vedio",g_Pos);  
  71.     }  
  72.       
  73.     cvReleaseCapture(&g_Capture);  
  74.     cvDestroyWindow("vedio");  
  75.   
  76.     return 0;  
  77. }  

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐