-- 作者:wangxinxin
-- 發布時間:2010-11-16 11:51:31
-- 基于WinCE的視頻采集應用方案
嵌入式系統是一種以應用為中心,以計算機技術為基礎,其軟硬件可配置、可裁減,對功能、可靠性、成本、體積、功耗有嚴格約束的專用計算機系統。它結合了先進的計算機技術、半導體技術、電子技術以及各個行業的具體應用,被看作技術密集、不斷創新的知識集成系統。近幾年來以軟硬件相結合為顯著特征、以消費電子類為主導的智能設備以超乎人們想象的速度獲得了前所未有的發展,與此同時,在工控領域也得到快速發展,在這個過程中,微軟公司也是首當其沖,其推出的Microsoft Windows CE是一個開放的、可裁減的、32位的實時操作系統和其他桌面版窗口操作系統相比,具有可靠性好、實時性高、內核體積小的特點,所以被廣泛用于各種嵌入式智能設備的開發,如工業控制、信息家電、移動通信、個人電子消費品等各個領域,是當今應用最多、增長最快的嵌入式操作系統。
EM9000 ARM嵌入式主板采用高端的ARM9芯片EP9315,特別針對工控系統中TFT彩色顯示智能終端的應用需求進行了精心的優化設計(同時支持觸摸屏)。作為一款已加載了WinCE工控主板,EM9000嵌入式主板可以支持客戶在其上采用通用的微軟開發工具,如eVC、VS2005,直接進行應用程序的開發,從而以更快的速度把產品推向市場。另一方面,EM9000嵌入式主板的所有通訊接口均配置了標準的WinCE驅動程序,客戶在應用程序開發中并不需要了解EM9000嵌入式主板內部的詳細技術情況,而直接調用WinCE的標準API函數,就可高效快速的操作EM9000的各個通訊接口,有效降低了客戶進行嵌入式系統產品開發的門檻和風險。同時,EM9000作為一款EP9315開發板,內置了協處理器,可以進行復雜的浮點運算,可以運用在需要進行高速復雜運算的特殊場合。
攝像頭(CAMERA)又稱為電腦相機、電腦眼等,它作為一種視頻輸入設備,被廣泛的運用于個人電腦視頻和實時監控等方面。然而,作為嵌入式的WinCE操作系統卻因為缺少攝像頭的驅動而不能采用這種視頻采集方案。為了更好的服務英創的客戶,經過公司團隊的努力,解決了這個難題,可以為貴公司提供低成本的攝像頭解決方案。
我們為攝像頭訂制了專門的API函數,提供了使用例程。你可以參照英創提供的例程,迅速編寫出適合自己領域的產品。
如果有需求,可以來電垂詢,我們將根據你的需求,提供最佳的解決方案。
表中列出了攝像頭的主要API函數。根據這些API函數就可以很方便的完成視頻采集程序設計。下面列出了主要的API函數和參數說明。
// Name : capInitCamera // Initialize driver and get current available cameras number. //Return : The number, of the available cameras, indicates success. int capInitCamera(void);
// Name : capGetCurrentVersion // Get the current driver version information. // Return : The length, in characters, of the copied string, // not including the terminating null character, indicates success. int capGetCurrentVersion( int index, //[IN] Camera index, 0 - first insigned char *pBufOut, // [OUT] Long pointer to the buffer that // will receive the text int lenOut // [IN] Specifies the maximum number of characters //to copy to the buffer, including the NULL character. // If the text exceeds this limit, it is truncated. );
//Name : capGetVideoFormat // Get the current video format. //Return : Zero indicates success. int capGetVideoFormat( int index, // [IN] Camera index int *pFormat, // [OUT] Long pointer to the buffer that will receive //the video format, VIDEO_PALETTE_RGB565 - //VIDEO_PALETTE_JPEG int *pSizeMode //[OUT] Long pointer to the buffer that will receive // the size mode, VIDEO_SIZE_VGA - VIDEO_SIZE_SIF );
// Name : capSetVideoFormat //Set video format. //Return : Zero indicates success. int capSetVideoFormat( int index, // [IN] Camera index int format, // [IN] Video format, VIDEO_PALETTE_RGB565 - //VIDEO_PALETTE_JPEG int sizeMode // [IN] Size mode, VIDEO_SIZE_VGA - VIDEO_SIZE_SIF );
// Name : capGrabFrame // Grab a frame from driver. //Return : The length, in bytes, of the copied video frame data, indicates success. int capGrabFrame( int index, // [IN] Camera index unsigned char *pFrameBuf, // [OUT] Long pointer to the buffer that will //receive the video frame unsigned int bufferLen // [IN] Specifies the maximum number of bytes //to copy to the buffer );
// Name : capGetLastJpeg //Get a last JPEG frame from driver. // Return : The length, in bytes, of the copied JPEG frame data, indicates success. int capGetLastJpeg( int index, // [IN] Camera index unsigned char *pFrameBuf, // [OUT] Long pointer to the buffer that will //receive the video frame unsigned int bufferLen // [IN] Specifies the maximum number of bytes //to copy to the buffer );
// Name : capStartCamera // Start camera to capture video. // Return : Zero indicates success. int capStartCamera( int index //[IN] Camera index );
// Name : capStopCamera // Stop camera to capture video. // Return : Zero indicates success. int capStopCamera( int index // [IN] Camera index );
// Name : capCloseCamera // Close all available camera. // Return : Void. void capCloseCamera(void);
// Name : capGetPciture // Get a last bitmap and jpeg from driver // Return : Zero indicates success. int capGetPicture( int index, // [IN] Camera index unsigned char *pFrameBuf, //[OUT] Long pointer to the buffer that //will receive the video frame unsigned int bufferLen, //[IN] Size, in bytes, of the buffer pointed //to by pFrameBuf unsigned char *pJpgBuf, //[OUT] Long pointer to the buffer that //will receive the jpeg picture unsigned int jpgLen, //[IN] Size, in bytes, of the buffer pointed to //by pJpgBuf PDWORD pdwActualOut //[OUT] Pointer to an array of the return lengths );
|