當(dāng)前位置:
首頁 >
VideoCapture类
發(fā)布時(shí)間:2025/3/21
32
豆豆
生活随笔
收集整理的這篇文章主要介紹了
VideoCapture类
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <iostream>using namespace std;
using namespace cv;int main()
{//打開視頻文件:其實(shí)就是建立一個(gè)VideoCapture結(jié)構(gòu)VideoCapture capture("D:/videos/PetsD2TeC2.avi");//檢測(cè)是否正常打開:成功打開時(shí),isOpened返回tureif(!capture.isOpened())cout<<"fail to open!"<<endl;//獲取整個(gè)幀數(shù)long totalFrameNumber = capture.get(CV_CAP_PROP_FRAME_COUNT);cout<<"整個(gè)視頻共"<<totalFrameNumber<<"幀"<<endl;//設(shè)置開始幀()long frameToStart = 300;capture.set( CV_CAP_PROP_POS_FRAMES,frameToStart);cout<<"從第"<<frameToStart<<"幀開始讀"<<endl;//設(shè)置結(jié)束幀int frameToStop = 400;if(frameToStop < frameToStart){cout<<"結(jié)束幀小于開始幀,程序錯(cuò)誤,即將退出!"<<endl;return -1;}else{cout<<"結(jié)束幀為:第"<<frameToStop<<"幀"<<endl;}//獲取幀率double rate = capture.get(CV_CAP_PROP_FPS);cout<<"幀率為:"<<rate<<endl;//定義一個(gè)用來控制讀取視頻循環(huán)結(jié)束的變量bool stop = false;//承載每一幀的圖像Mat frame;//顯示每一幀的窗口namedWindow("Extracted frame");//兩幀間的間隔時(shí)間://int delay = 1000/rate;int delay = 1000/rate;//利用while循環(huán)讀取幀//currentFrame是在循環(huán)體中控制讀取到指定的幀后循環(huán)結(jié)束的變量long currentFrame = frameToStart;//濾波器的核int kernel_size = 3;Mat kernel = Mat::ones(kernel_size,kernel_size,CV_32F)/(float)(kernel_size*kernel_size);while(!stop){//讀取下一幀if(!capture.read(frame)){cout<<"讀取視頻失敗"<<endl;return -1; }//這里加濾波程序imshow("Extracted frame",frame);filter2D(frame,frame,-1,kernel);imshow("after filter",frame);cout<<"正在讀取第"<<currentFrame<<"幀"<<endl;//waitKey(int delay=0)當(dāng)delay ≤ 0時(shí)會(huì)永遠(yuǎn)等待;當(dāng)delay>0時(shí)會(huì)等待delay毫秒//當(dāng)時(shí)間結(jié)束前沒有按鍵按下時(shí),返回值為-1;否則返回按鍵int c = waitKey(delay);//按下ESC或者到達(dá)指定的結(jié)束幀后退出讀取視頻if((char) c == 27 || currentFrame > frameToStop){stop = true;}//按下按鍵后會(huì)停留在當(dāng)前幀,等待下一次按鍵if( c >= 0){waitKey(0);}currentFrame++;}//關(guān)閉視頻文件capture.release();waitKey(0);return 0;
}
總結(jié)
以上是生活随笔為你收集整理的VideoCapture类的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反序列化(层序)
- 下一篇: 获取最大轮廓 opencv