Opencv 简单视频播放器

Posted 一生不过烟花

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Opencv 简单视频播放器相关的知识,希望对你有一定的参考价值。

  1. // C++ header and namespace  
  2. #include <iostream>  
  3. #include <string>  
  4. #include <cstdlib>  
  5. using namespace std;  
  6.   
  7. // Opencv header and namespace  
  8. #include <opencv2/core/core.hpp>  
  9. #include <opencv2/highgui/highgui.hpp>  
  10. #include <opencv2/imgproc/imgproc.hpp>  
  11. #include <opencv2/video/video.hpp>  
  12. using namespace cv;  
  13.   
  14. bool JumpToFrame(false);  
  15.   
  16. int main(int argc, char* argv[])  
  17. {     
  18.     //!< Check out Input video  
  19.     if (argc != 2)  
  20.     {  
  21.         cerr << "Usage: VideoPlayer.exe VideoFilename." << endl;  
  22.         exit(1);  
  23.     }  
  24.   
  25.     //!< Check out Open Video  
  26.     VideoCapture capture(argv[1]);  
  27.     if (!capture.isOpened())  
  28.     {  
  29.         return 1;  
  30.     }  
  31.   
  32. #pragma region InfoOfVideo  
  33.       
  34.     long    NumberOfFrame = static_cast<long>(capture.get(CV_CAP_PROP_FRAME_COUNT));  
  35.     double  HeightOfFrame = capture.get(CV_CAP_PROP_FRAME_HEIGHT);  
  36.     double  WidthOfFrame  = capture.get(CV_CAP_PROP_FRAME_WIDTH);  
  37.     double  FpsOfVideo    = capture.get(CV_CAP_PROP_FPS);     
  38.       
  39.     cout << "The name of the input video is " << argv[1] << "." << endl;  
  40.     cout << "NumberOfFrame : " << NumberOfFrame << endl;  
  41.     cout << "HeightOfFrame : " << HeightOfFrame << endl;  
  42.     cout << "WidthOfFrame  : " << WidthOfFrame << endl;  
  43.     cout << "FpsOfVieo     : " << FpsOfVideo << endl;  
  44.   
  45. #pragma endregion  
  46.   
  47.     // !< JumpToFrame function  
  48.     while (JumpToFrame)  
  49.     {  
  50.         double Position = 0.0;  
  51.         cout << "Please input the number of frame which you want jump to!" << endl;  
  52.         cin >> Position;  
  53.         capture.set(CV_CAP_PROP_POS_FRAMES, Position);  
  54.     }  
  55.   
  56.     // !< Delay between each frame in ms corresponds to video frame rate(fps)  
  57.     Mat frame;  
  58.     bool stop(false);  
  59.     int delay = 1000 / FpsOfVideo;  
  60.     namedWindow("Extracted Frame");  
  61.   
  62.     while (!stop)  
  63.     {  
  64.         //read next frame if any  
  65.         if (!capture.read(frame))  
  66.         {  
  67.             break;  
  68.         }  
  69.         imshow("Extracted Frame", frame);  
  70.         //introduce a delay or press key to stop  
  71.         if (waitKey(delay) >= 0)  
  72.         {  
  73.             stop = true;  
  74.         }  
  75.     }  
  76.   
  77.     // !< Close the video file.  
  78.     // Not required since called by destructor  
  79.     capture.release();  
  80.   
  81.     return 0;  

以上是关于Opencv 简单视频播放器的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Opencv 和 python 从网络上播放视频

Python-pyqt5+opencv视频播放器,上传本地视频

OpenCV这么简单为啥不学——2逐帧播放视频(VideoCapture函数waitKey函数0xFF == ord(‘1‘))

OpenCV + Qt 制作视频播放器

基于OpenCV和C++的控制台播放视频

opencv如何实现视频连续播放