OpenCV獲取視頻的每一幀并保存為.jpg圖片
本文實(shí)例為大家分享了OpenCV獲取視頻的每一幀并保存為圖片的具體代碼,供大家參考,具體內(nèi)容如下
#include<opencv2\opencv.hpp>
#include <iostream>
#include <stdio.h>
#include<fstream>
using namespace std;
using namespace cv;
//獲取視頻中的人臉
int main()
{
//打開(kāi)視頻文件:其實(shí)就是建立一個(gè)VideoCapture結(jié)構(gòu)
VideoCapture capture("1.mp4");
//檢測(cè)是否正常打開(kāi):成功打開(kāi)時(shí),isOpened返回ture
if (!capture.isOpened())
cout << "fail toopen!" << endl;
//獲取整個(gè)幀數(shù)
long totalFrameNumber = capture.get(CV_CAP_PROP_FRAME_COUNT);
cout << "整個(gè)視頻共" << totalFrameNumber << "幀" << endl;
//設(shè)置開(kāi)始幀()
long frameToStart = 1;
capture.set(CV_CAP_PROP_POS_FRAMES, frameToStart);
cout << "從第" << frameToStart << "幀開(kāi)始讀" << endl;
//設(shè)置結(jié)束幀
int frameToStop = 30;
if (frameToStop < frameToStart)
{
cout << "結(jié)束幀小于開(kāi)始幀,程序錯(cuò)誤,即將退出!" << endl;
return -1;
}
else
{
cout << "結(jié)束幀為:第" << frameToStop << "幀" << endl;
}
//獲取幀率
double rate = capture.get(CV_CAP_PROP_FPS);
cout << "幀率為:" << rate << endl;
//定義一個(gè)用來(lái)控制讀取視頻循環(huán)結(jié)束的變量
bool stop = false;
//承載每一幀的圖像
Mat frame;
//顯示每一幀的窗口
namedWindow("Extractedframe");
//兩幀間的間隔時(shí)間:
//int delay = 1000/rate;
double 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;
}
cout << "正在讀取第" << currentFrame << "幀" << endl;
imshow("Extractedframe", frame);
cout << "正在寫(xiě)第" << currentFrame << "幀" << endl;
stringstream str;
str << currentFrame << ".jpg";
cout << str.str() << endl;
imwrite(str.str(), frame);
//waitKey(intdelay=0)當(dāng)delay≤ 0時(shí)會(huì)永遠(yuǎn)等待;當(dāng)delay>0時(shí)會(huì)等待delay毫秒
//當(dāng)時(shí)間結(jié)束前沒(méi)有按鍵按下時(shí),返回值為-1;否則返回按鍵
//int c = waitKey(delay);
int c = waitKey(1000);
//按下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;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。
上一篇:初學(xué)C語(yǔ)言基本運(yùn)算和表達(dá)式
欄 目:C語(yǔ)言
下一篇:C語(yǔ)言如何建立鏈表并實(shí)現(xiàn)增刪查改詳解
本文標(biāo)題:OpenCV獲取視頻的每一幀并保存為.jpg圖片
本文地址:http://www.jygsgssxh.com/a1/Cyuyan/241.html
您可能感興趣的文章
- 01-10Linux C 獲取進(jìn)程退出值的實(shí)現(xiàn)代碼
- 01-10解析Linux下的時(shí)間函數(shù):設(shè)置以及獲取時(shí)間的方法
- 01-10DHCP:解析開(kāi)發(fā)板上動(dòng)態(tài)獲取ip的2種實(shí)現(xiàn)方法詳解
- 01-10基于linux下獲取時(shí)間函數(shù)的詳解
- 01-10linux c 獲取本機(jī)公網(wǎng)IP的實(shí)現(xiàn)方法
- 01-10用c 獲取文件MD5值的實(shí)現(xiàn)方法
- 01-10使用C語(yǔ)言中的time函數(shù)獲取系統(tǒng)時(shí)間
- 01-10linux c程序中獲取shell腳本輸出的實(shí)現(xiàn)方法
- 01-10c++獲取進(jìn)程信息列表和進(jìn)程所調(diào)用的dll列表
- 01-10C++獲取任務(wù)欄打開(kāi)程序窗口示例


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹(shù)的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問(wèn)題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 04-02c語(yǔ)言函數(shù)調(diào)用后清空內(nèi)存 c語(yǔ)言調(diào)用
- 04-02func函數(shù)+在C語(yǔ)言 func函數(shù)在c語(yǔ)言中
- 04-02c語(yǔ)言的正則匹配函數(shù) c語(yǔ)言正則表達(dá)
- 04-02c語(yǔ)言用函數(shù)寫(xiě)分段 用c語(yǔ)言表示分段
- 04-02c語(yǔ)言中對(duì)數(shù)函數(shù)的表達(dá)式 c語(yǔ)言中對(duì)
- 04-02c語(yǔ)言編寫(xiě)函數(shù)冒泡排序 c語(yǔ)言冒泡排
- 04-02c語(yǔ)言沒(méi)有round函數(shù) round c語(yǔ)言
- 04-02c語(yǔ)言分段函數(shù)怎么求 用c語(yǔ)言求分段
- 04-02C語(yǔ)言中怎么打出三角函數(shù) c語(yǔ)言中怎
- 04-02c語(yǔ)言調(diào)用函數(shù)求fibo C語(yǔ)言調(diào)用函數(shù)求
隨機(jī)閱讀
- 01-11Mac OSX 打開(kāi)原生自帶讀寫(xiě)NTFS功能(圖文
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10SublimeText編譯C開(kāi)發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 01-10C#中split用法實(shí)例總結(jié)
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 04-02jquery與jsp,用jquery


