1. 程式人生 > >OpenCV中用於攝像頭視訊讀取的函式說明

OpenCV中用於攝像頭視訊讀取的函式說明

本文轉載來自付師姐:http://blog.csdn.net/hao8228/article/details/45191495

1、cvQueryFrame

OpenCV中一個函式cvQueryFrame

從攝像頭或者檔案中抓取並返回一幀

IplImage* cvQueryFrame( CvCapture* capture );

capture

視訊獲取結構。

函式cvQueryFrame從攝像頭或者檔案中抓取一幀,然後解壓並返回這一幀。 這個函式僅僅是函式cvGrabFrame和 函式cvRetrieveFrame在一起呼叫的組合。 返回的影象不可以被使用者釋放或者修改。

cvQueryFrame的引數為CvCapture結構的指標。用來將下一幀視訊檔案載入記憶體,返回一個對應當前幀的指標。與cvLoadImage不同的是cvLoadImage為影象分配記憶體空間,而cvQueryFrame使用已經在cvCapture結構中分配好的記憶體。這樣的話,就沒有必要通過cvReleaseImage()對這個返回的影象指標進行釋放,當CvCapture結構被釋放後,每一幀影象所對應的記憶體空間即會被釋放。

2、cvCaptureFromCAM

初始化從攝像頭中獲取視訊

CvCapture* cvCaptureFromCAM( int index );
index
要使用的攝像頭索引。如果只有一個攝像頭或者用哪個攝像頭也無所謂,那使用引數-1應該便可以。

函式給從攝像頭的視訊流分配和初始化CvCapture結構。目前在Windows下可使用兩種介面:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有兩種介面:V4L和FireWire(IEEE1394)。

讀攝像頭用:CvCapture* capture=cvCaptureFromCAM(0);//引數也可以是-1,

讀AVI檔案演示用: CvCapture* capture=cvCaptureFromFile(“XXX.avi”);

3.cvCreateCameraCapture好像還沒有什麼區別

初始化從攝像頭中獲取視訊

CvCapture* cvCreateCameraCapture( int index );

index

要使用的攝像頭索引。如果只有一個攝像頭或者用哪個攝像頭也無所謂,那使用引數-1應該便可以。

函式cvCreateCameraCapture給從攝像頭的視訊流分配和初始化CvCapture結構。目前在Windows下可使用兩種介面:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有兩種介面:V4L和FireWire(IEEE1394)。

釋放這個結構,使用函式cvReleaseCapture。

4、CvCapture
視訊獲取結構
typedef struct CvCapture CvCapture;
結構CvCapture 沒有公共介面,它只能被用來作為視訊獲取函式的一個引數。

這個是一個很重要的結構 以後無論是讀取已有視訊還是從攝像頭獲取都必須用到它
然後的工作就是把視屏顯示出來