1. 程式人生 > >讀取視訊幀的幾種方法(自己整理)

讀取視訊幀的幾種方法(自己整理)

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