2013-03-04 2 views
0

Привет Я написал следующий код в OpenCV. В основном он читает видео из файла. Теперь я хочу создать функцию для изменения размера видео, но я не уверен, как вызвать класс «VideoCapture» из основной функции. Я написал пример функции, чтобы увидеть, будет ли он читать что-либо, но он компилирует тонкий показ материала из основной функции, но ничего из вновь созданной функции. Любая помощь? P.S Я не очень опытный, медведь со мной LOL.Функции в OpenCV

 using namespace cv; 
    using namespace std; 

    void resize_video(VideoCapture capture); 

    int main(int argc, char** argv) 
    { 
     VideoCapture capture; //the C++ API class to capture the video from file 

     if(argc == 2) 
     capture.open(argv[1]); 
     else 
     capture.open(0); 

     if(!capture.isOpened()) 
     { 
      cout << "Cannot open video file " << endl; 
      return -1; 
     } 

     Mat frame; 
     namedWindow("display", CV_WINDOW_AUTOSIZE); 
     cout << "Get the video dimensions " << endl; 
     int fps = capture.get((int)CV_CAP_PROP_FPS); 
     int height = capture.get((int)CV_CAP_PROP_FRAME_HEIGHT); 
     int width = capture.get((int)CV_CAP_PROP_FRAME_WIDTH); 
     int noF = capture.get((int)CV_CAP_PROP_FRAME_COUNT); 
     CvSize size = cvSize(width , height); 

     cout << "Dimensions: " << width << height << endl; 
     cout << "Number of frames: " << noF << endl; 
     cout << "Frames per second: " << fps << endl; 


     while(true) 
     { 
      capture >> frame; 
      if(frame.empty()) 
      break; 
      imshow("display", frame); 
      if (waitKey(30)== 'i') 
      break; 
     } 
     //resize_video(); 
    } 

    void resize_video(VideoCapture capture) 
    { 
    cout << "Begin resizing video " << endl; 

    //return 0; 
    } 

ответ

0

вы хотите назвать вашу функцию ВНУТРИ время цикла, а не после того, как он (слишком поздно, программа более)

так, это может выглядеть следующим образом:

void resize_video(Mat & image) 
{ 
    // 
    // do your processing 
    // 
    cout << "Begin resizing video " << endl; 
} 

и назвать его например:

while(true) 
    { 
     capture >> frame; 
     if(frame.empty()) 
     break; 

     resize_video(frame); 

     imshow("display", frame); 
     if (waitKey(30)== 'i') 
     break; 
    } 
+0

ОК спасибо связка! – user2035796

Смежные вопросы