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 沒有公共介面,它只能被用來作為視訊獲取函式的一個引數。
這個是一個很重要的結構 以後無論是讀取已有視訊還是從攝像頭獲取都必須用到它
然後的工作就是把視屏顯示出來