0

こんにちは私はOpenCVで次のコードを書きました。基本的にはファイルからビデオを読み取ります。ここで、ビデオのサイズを変更する関数を作成したいのですが、メイン関数から「VideoCapture」クラスを呼び出す方法がわかりません。何かを読み取るかどうかを確認するためにサンプル関数を作成しましたが、メイン関数からのものを表示して正常にコンパイルしますが、新しく作成された関数からは何も表示しません。何か助けはありますか?PS私はあまり経験がありません、大爆笑です。

     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;
  }
4

1 に答える 1

0

while ループの後ではなく、内部で関数を呼び出したい (遅すぎる、プログラムオーバー)

したがって、次のようになります。

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;
    }
于 2013-03-04T14:23:32.283 に答える