CvCapture* capture_GUI_4 = NULL; int position_p = 0; //用来记录滚动条的位置 int position_p_g = 0; //用来记录滚动条的位置,且以10为步长跳进 void onPositionChange(int pos) { position_p_g = pos; cvSetCaptureProperty(capture_GUI_4, CV_CAP_PROP_POS_FRAMES, pos); } int on_or_off_p = 0; bool on_off = true; //true时播放,false暂停 void onOn_or_OffChange(int pos) { on_off = !on_off; } void myGUI4() { cvNamedWindow("Video"); capture_GUI_4 = cvCreateFileCapture("盲探.rm"); int frame_count = cvGetCaptureProperty(capture_GUI_4, CV_CAP_PROP_FRAME_COUNT); if(frame_count > 0) { cvCreateTrackbar("Position", "Video", &position_p, frame_count, onPositionChange); cvCreateTrackbar("On_or_Off", "Video", &on_or_off_p, 1, onOn_or_OffChange); } int fps = 1000/cvGetCaptureProperty(capture_GUI_4, CV_CAP_PROP_FPS); //视频的播放频率,用于cvWaitKey() IplImage* frame = NULL; while(true) { if(on_off) { //只有播放状态时才读取下一帧 frame = cvQueryFrame(capture_GUI_4); position_p_g += 10; //以10为步长跳进 cvSetTrackbarPos("Position", "Video", position_p_g); //设置滚动条 //cvSetCaptureProperty(capture_GUI_4, CV_CAP_PROP_POS_FRAMES, position_p_g); //似乎不设置这个也可以,有上一个就可以了 } if(frame!=NULL) { cvShowImage("Video", frame); } else { break; } if(cvWaitKey(fps) == 27) break; } }
《学习OpenCV(中文版)》第4章 练习4
最新推荐文章于 2022-07-22 15:30:38 发布