1. 程式人生 > >Opencv中新增進度條及回撥函式

Opencv中新增進度條及回撥函式

#include  "highgui.h"
#include  "iostream"
using namespace std;
using namespace cv;
VideoCapture video1("Seq04.avi");                                        

int position =video1.get(CV_CAP_PROP_POS_FRAMES);  //如果createTrackbar第三個引數是全域性變數,會省去很多麻煩

void onTrackbarslide(int pos,void*)         //如果函式的引數可以是任意型別指標,那麼應宣告其引數為void*

{
double zhenNum=video1.set(CV_CAP_PROP_POS_FRAMES,pos); //第五個引數是一個函式,調到指定的幀使用set函式
}
int  main()
{
if(!video1.isOpened())
cout<<"wrong"<<endl;
double zhenNum=video1.get(CV_CAP_PROP_FRAME_COUNT); //統計幀數作為進度條的最大值
double zhenLv=video1.get(CV_CAP_PROP_FPS);                         //幀率,用於設定播放延遲

double delay=1/zhenLv;

Mat frame;

while(1)
{
if(!video1.read(frame))   //後面跟的是Mat型
break;
imshow("abc",frame);
waitKey(1000*delay);  //延遲N毫秒,所以要乘以1000
createTrackbar("tiao","abc",&position,zhenNum,onTrackbarslide);//第五個引數實際是一個數字與進度的對應關係;
}