opencv(3)

//*********************************製作視頻滾動條未成功,原因不明**************************************************


#include <cv.h>
#include <highgui.h>

int g_slider_position = 0;//滾動條位置的全局變量
CvCapture * g_capture = NULL;//回調函數使用的capture對象

void onTrackbarslide(int pos)
{
 cvSetCaptureProperty(g_capture, CV_CAP_PROP_POS_FRAMES, pos);//滾動的位置傳入,設置cvcapture對象的屬性
}
int main()
{
 cvNamedWindow("test_demo3", CV_WINDOW_AUTOSIZE);
 g_capture = cvCreateFileCapture("D:\\op\\Megamind.avi");//不用單個\表示地址是爲了避免\本事可能是轉意字符;avi文件必須爲x-vid格式或者安解碼器,也有說支持xvid格式的設備很少
 int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_POS_AVI_RATIO);//查詢cvcapture對象的屬性
 //int frames = (int)cvGetCaptureProperty(g_capture, CV_CAP_PROP_FRAME_COUNT);
 frames = 120;
 if (frames != 0)
 {
  cvCreateTrackbar("Position",//滾動條名稱
   "teat_demo3", //所屬窗口名稱
   &g_slider_position,//滾動條位置變量
   frames,//查詢的總幀數,若視頻格式不合適,則返回幀數爲0無法創建滾動條
   onTrackbarslide);//回調函數
   
 }
 else
 {
  printf("crate trackbar failed,%d",frames);
 }
 IplImage * frame;
 while (1)
 {
  frame = cvQueryFrame(g_capture);
  if (!frame) break;
  cvShowImage("test_demo3", frame);
  char c = cvWaitKey(33);
  if (c == 27) break;
 }
 cvReleaseCapture(&g_capture);
 cvDestroyWindow("test_demo3");

 return (0);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章