Opencv中新增進度條及回撥函式
阿新 • • 發佈:2019-01-02
#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);//第五個引數實際是一個數字與進度的對應關係;
}
#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);//第五個引數實際是一個數字與進度的對應關係;
}