OpenCV外接USB攝像頭的方法
近期,需要利用OpenCV計(jì)算機(jī)視覺庫(kù)讀取視頻并顯示、保存。由于之前一直使用筆記本,此次臺(tái)式機(jī)外接USB攝像頭,出現(xiàn)了很大問題,總是顯示內(nèi)存問題,谷歌、百度大半天,總結(jié)各路大神建議,最終解決了問題,將問題和代碼分享給大家,避免走彎路。
出現(xiàn)問題原因:
1. 攝像頭初始化需要時(shí)間,進(jìn)入循環(huán)前 waitKey(2000),否則會(huì)出現(xiàn)閃退;
2. 攝像頭視頻存在解碼問題。
//--------------------------------------【程序說明】-------------------------------------------
// 程序說明:OpenCV計(jì)算機(jī)視覺庫(kù)入門學(xué)習(xí)
// 程序描述:臺(tái)式機(jī)利用OpenCV外接USB攝像頭,讀入視頻并顯示
// 開發(fā)測(cè)試所用操作系統(tǒng): Windows 7 64bit
// 開發(fā)測(cè)試所用IDE版本:Visual Studio 2010
// 開發(fā)測(cè)試所用OpenCV版本: 2.4.9
// 2017年10月 Created by @Fireman1994
//------------------------------------------------------------------------------------------------
#include"cv.h"
#include"highgui.h"
#include"iostream"
using namespace std;
int main(int argc,char* argv[])
{
CvCapture* cap;
cap=cvCaptureFromCAM(0);
if(!cap)
{
cout<<"create camera capture error"<<endl;
system("pause");
exit(-1);
}
cvNamedWindow("img",1);
IplImage* img;
//進(jìn)入循環(huán)前,等待一段時(shí)間攝像頭初始化,否則初始化未完成,會(huì)直接閃退出程序
cvWaitKey(2000);
while(1)
{
img=cvQueryFrame(cap);//讀入視頻解碼
if(!img)
break;
cvShowImage("img",img);
cvWaitKey(3);
}
cvReleaseCapture(&cap);
cvDestroyAllWindows();
cvReleaseImage(&img);
return 0;
}
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
C語(yǔ)言實(shí)現(xiàn)猜數(shù)字小游戲的示例代碼
猜數(shù)字小游戲是我們小時(shí)候喜歡我們一個(gè)經(jīng)典小游戲。本文將用C語(yǔ)言實(shí)現(xiàn)這一經(jīng)典游戲,文中的示例代碼講解詳細(xì),感興趣的可以了解一下2022-08-08
Qt利用QNetwork實(shí)現(xiàn)上傳數(shù)據(jù)的示例代碼
這篇文章主要為大家詳細(xì)介紹了Qt如何利用QNetwork實(shí)現(xiàn)上傳數(shù)據(jù)的 功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2023-02-02
C++ 將文件數(shù)據(jù)一次性加載進(jìn)內(nèi)存實(shí)例代碼
這篇文章主要介紹了C++ 將文件數(shù)據(jù)一次性加載進(jìn)內(nèi)存實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05
關(guān)于讀取popen輸出結(jié)果時(shí)未截?cái)嘧址畬?dǎo)致的命令行注入詳解
這篇文章主要給大家介紹了關(guān)于讀取popen輸出結(jié)果時(shí)未截?cái)嘧址畬?dǎo)致的命令行注入的相關(guān)資料,文中通過圖文及示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03

