Opencv實(shí)現(xiàn)讀取攝像頭和視頻數(shù)據(jù)
實(shí)際上,按一定速度讀取攝像頭視頻圖像后,便可以對(duì)圖像進(jìn)行各種處理了。
那么獲取主要用到的是VideoCapture類,一個(gè)demo如下:
//如果有外接攝像頭,則ID為0,內(nèi)置為1,否則用0就可以表示內(nèi)置攝像頭
cv::VideoCapture cap(0);
//判斷攝像頭是否打開
if(!cap.isOpened())
{
return -1;
}
cv::Mat myframe;
cv::Mat edges;
bool stop = false;
while(!stop)
{
//獲取當(dāng)前幀
cap>>myframe;
//轉(zhuǎn)化為灰度圖
cv::cvtColor(myframe, edges, CV_BGR2GRAY);
//高斯濾波器
cv::GaussianBlur(edges, edges, cv::Size(7,7), 1.5, 1.5);
//Canny算子檢測(cè)邊緣
cv::Canny(edges, edges, 0, 30, 3);
//顯示邊緣
cv::imshow("current frame",edges);
if(cv::waitKey(30) >=0)
stop = true;
}
cv::waitKey(0);
同樣的,如果要讀取一段視頻文件,視頻文件可以看做是一連串的視頻幀組成,而顯示時(shí)設(shè)置一定延時(shí),便可以按一定速度顯示,一個(gè)demo如下:
// Open the video file
cv::VideoCapture capture("../images/bike.avi");
// check if video successfully opened
if (!capture.isOpened())
return 1;
// Get the frame rate
double rate= capture.get(CV_CAP_PROP_FPS);
bool stop(false);
cv::Mat frame; // current video frame
cv::namedWindow("Extracted Frame");
// Delay between each frame
// corresponds to video frame rate
int delay= 1000/rate;
//用于設(shè)置幀的移動(dòng)位置。
input_video.set(CV_CAP_PROP_POS_FRAMES,100);
// for all frames in video
while (!stop) {
// read next frame if any
if (!capture.read(frame))
break;
cv::imshow("Extracted Frame",frame);
// introduce a delay
// or press key to stop
if (cv::waitKey(delay)>=0)
stop= true;
}
// Close the video file
capture.release();
cv::waitKey();
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
VSCode 搭建 Arm 遠(yuǎn)程調(diào)試環(huán)境的步驟詳解
這篇文章主要介紹了VSCode 搭建 Arm 遠(yuǎn)程調(diào)試環(huán)境的步驟詳解,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04
C++模板以及實(shí)現(xiàn)vector實(shí)例詳解
模板是為了實(shí)現(xiàn)泛型編程,所謂泛型編程,就是指編寫與類型無關(guān)的代碼,下面這篇文章主要給大家介紹了關(guān)于C++模板以及實(shí)現(xiàn)vector的相關(guān)資料,需要的朋友可以參考下2021-11-11
c語言鏈表基本操作(帶有創(chuàng)建鏈表 刪除 打印 插入)
這篇文章主要介紹了c語言鏈表基本操作,大家參考使用吧2013-12-12
關(guān)于C++的強(qiáng)制類型轉(zhuǎn)換淺析
C++的強(qiáng)制類型轉(zhuǎn)換是我們?cè)谌粘i_發(fā)中經(jīng)常會(huì)遇到的,下面這篇文章主要給大家介紹了關(guān)于C++強(qiáng)制類型轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-09-09
C++數(shù)據(jù)結(jié)構(gòu)深入探究棧與隊(duì)列
棧和隊(duì)列,嚴(yán)格意義上來說,也屬于線性表,因?yàn)樗鼈円捕加糜诖鎯?chǔ)邏輯關(guān)系為 "一對(duì)一" 的數(shù)據(jù),但由于它們比較特殊,本章講解分別用隊(duì)列實(shí)現(xiàn)棧與用棧實(shí)現(xiàn)隊(duì)列2022-05-05

