進度控制:
#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元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
