進度控制:
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv\cxcore.h>
//記錄滾動條的當前位置
int g_slider_pos = 0;
//滾動條的回調函數 參數int pos 是指當前滾動條所在位置
void on_changed(int pos)
{
//輸出滾動條當前所在位置
printf("g_slider_pos is %d \n" , g_slider_pos);
}
int main(int argc, char* argv[])
{
//創建一個窗口
cvNamedWindow("show");
//在窗口show上創建名字為Position的滾動條
cvCreateTrackbar(
"Position",
"show",
&g_slider_pos,
400,
on_changed
);
//顯示滾動條
cvShowImage("show",NULL);
//等待用戶按鍵
cvWaitKey(0);
return 0;
}
視頻化的進度控制:
#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <opencv\cxcore.h>
//聲明一個CvCapture類型指針 用于接收cvCreateFileCapture的返回值
CvCapture* g_capture = NULL;
//記錄滾動條的當前位置
int g_slider_pos = 0;
//對視頻幀進行計數的變量
int frame_count = 0;
//滾動條的回調函數 參數int pos 是指當前滾動條所在位置
void onTrackbarSlider(int pos)
{
//設置g_capture的屬性 使得 從位置pos開始播放視頻
cvSetCaptureProperty(
g_capture,
CV_CAP_PROP_POS_FRAMES,
pos
);
//在拉動滾動條后 保持變量frame_count與滾動條的位置是同步的
frame_count = pos ;
}
int main(int argc, char* argv[])
{
//創建一個窗口
cvNamedWindow("show");
//打開有一個視頻文件
g_capture = cvCreateFileCapture("C:\\Users\\zxl\\Desktop\\1.avi");
//獲取視頻的總幀數
int frames = (int)cvGetCaptureProperty(
g_capture,
CV_CAP_PROP_FRAME_COUNT
);
if(frames>0)
{
//在窗口show上創建名字為Position的滾動條
cvCreateTrackbar(
"Position",
"show",
&g_slider_pos,
frames,
onTrackbarSlider
);
}
//圖像指針變量
IplImage* frame;
while(1)
{
//從g_capture獲取一幀圖像 填充到相應的內存緩沖區
frame = cvQueryFrame(g_capture);
//如果到視頻結尾 則退出循環
if(!frame)
{
break;
}
//顯示圖像
cvShowImage("show",frame);
//接收用戶按鍵
char c = cvWaitKey(33);
//如果接收到 按鍵'Esc' 則退出循環
if(c==27)
{
break;
}
//滾動條 隨著視頻的播放 進行移動
cvSetTrackbarPos("Position","show", frame_count);
frame_count++;
}
//釋放資源
cvReleaseCapture(&g_capture);
cvDestroyWindow("show");
return 0;
}
?
?
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061
微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元

