讀取視訊幀的幾種方法(自己整理)
阿新 • • 發佈:2018-12-30
1、第一種方法
#include "opencv2/opencv.hpp" using namespace cv; int main(int, char**) { VideoCapture cap("E:\\圖片\\視訊材料\\AVSEQ01.avi");// open the default camera if(!cap.isOpened()) // check if we succeeded return -1;namedWindow("src"); for( ; ; ) { Mat frame; cap >> frame;// get a new frame from cameraimshow("src", frame);if(waitKey(30) >= 0) break; } return 0; }
2、第二種方法
#include <iostream> #include<opencv2/opencv.hpp> using namespace std; using namespace cv;Mat frame;//視訊幀 int main() { char FilePathName[200]="E:\\圖片\\視訊材料\\AVSEQ01.avi";//視訊路徑 VideoCapture capture(FilePathName);//讀取本地視訊 if(!capture.isOpened()) {cout<<"載入視訊失敗,請檢查檔案路徑設定!"<<endl; return -1; } namedWindow("原視訊"); bool stop(false);while(!stop) { if (!capture.read(frame))//讀取視訊的一幀 break; imshow("原視訊",frame); if (waitKey(10)>=0) stop= true; } waitKey(); return 0; }
3、第三種方法
#include "opencv2/opencv.hpp" using namespace cv; int main(int, char**){ VideoCapture cap("E:\\圖片\\視訊材料\\AVSEQ01.avi"); if(!cap.isOpened()) // check if we succeeded return -1;namedWindow("src"); for(;;) { Mat frame; cap.grab();//從視訊檔案或捕獲裝置獲取下一幀 cap.retrieve(frame);//解碼並返回抓取了的視訊幀imshow("src", frame); if(waitKey(30) >= 0) break; } return 0; }