HighGUI參考手冊

來源:互聯網
上載者:User
簡單圖形介面地址:http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm

 

cvNamedWindow

建立視窗

int cvNamedWindow( const char* name, int flags );
name
視窗的名字,它被用來區分不同的視窗,並被顯示為視窗標題。
flags
視窗屬性標誌。目前唯一支援的標誌是 CV_WINDOW_AUTOSIZE。當這個標誌被設定後,如果使用者不能手動改變視窗大小,視窗大小會自動調整以適合被顯示映像(參考cvShowImage)。

函數cvNamedWindow建立一個可以放置映像和trackbar的視窗。被建立的視窗可以通過它們的名字被引用。

如果已經存在這個名字的視窗,這個函數將不做任何事情。

cvDestroyWindow

銷毀一個視窗

void cvDestroyWindow( const char* name );
name
要被銷毀的視窗的名字。

函數cvDestroyWindow銷毀指定名字的視窗。

cvDestroyAllWindows

銷毀所有HighGUI視窗

void cvDestroyAllWindows(void);

函數cvDestroyAllWindows銷毀所有已經開啟的HighGUI視窗。

cvResizeWindow

設定視窗大小

void cvResizeWindow( const char* name, int width, int height );
name
將被設定視窗的名字。
width
新的視窗寬度。
height
新的視窗高度。

函數cvResizeWindow改變視窗的大小。

cvMoveWindow

設定視窗的位置

void cvMoveWindow( const char* name, int x, int y );
name
將被設定的視窗的名字。
x
視窗左上方的x座標。
y
視窗左上方的y座標。

函數cvMoveWindow改變視窗的位置。

cvGetWindowHandle

通過名字擷取視窗控制代碼

void* cvGetWindowHandle( const char* name );
name
視窗名字。

函數cvGetWindowHandle返回原始的視窗控制代碼(在Win32情況下返回HWND,GTK+情況下返回GtkWidget)

cvGetWindowName

通過控制代碼擷取視窗的名字

const char* cvGetWindowName( void* window_handle );
window_handle
視窗控制代碼。

給定函數cvGetWindowName一個視窗的控制代碼(在Win32情況下是HWND,GTK+情況下是GtkWidget),函數返回視窗的名字。

cvShowImage

在指定視窗中顯示映像

void cvShowImage( const char* name, const CvArr* image );
name
視窗的名字。
image
被顯示的映像。

函數cvShowImage 在指定視窗中顯示映像。如果視窗建立的時候被設定標誌CV_WINDOW_AUTOSIZE,那麼映像將以原始大小顯示;否則,映像將被伸縮以適合視窗大小。

cvCreateTrackbar

建立trackbar並將它添加到指定的視窗。

CV_EXTERN_C_FUNCPTR( void (*CvTrackbarCallback)(int pos) );int cvCreateTrackbar( const char* trackbar_name, const char* window_name,                      int* value, int count, CvTrackbarCallback on_change );
trackbar_name
被建立的trackbar名字。
window_name
視窗名字,這個視窗將為被建立trackbar的父物件。
value
整數指標,它的值將反映滑塊的位置。這個變數指定建立時的滑塊位置。
count
滑塊位置的最大值。最小值一直是0。
on_change
每次滑塊位置被改變的時候,被調用函數的指標。這個函數應該被聲明為 void Foo(int); 如果沒有回呼函數,這個值可以設為NULL。

函數cvCreateTrackbar用指定的名字和範圍來建立trackbar(滑塊或者範圍控制),指定與trackbar位置同步的變數,並且指定當trackbar位置被改變的時候調用的回呼函數。被建立的trackbar顯示在指定視窗的頂端。

cvGetTrackbarPos

擷取trackbar的位置

int cvGetTrackbarPos( const char* trackbar_name, const char* window_name );
trackbar_name
trackbar的名字。
window_name
trackbar父視窗的名字。

函數cvGetTrackbarPos返回指定trackbar的當前位置。

cvSetTrackbarPos

設定trackbar位置

void cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );
trackbar_name
trackbar的名字。
window_name
trackbar父視窗的名字。
pos
新的位置。

函數cvSetTrackbarPos設定指定trackbar的位置。

cvSetMouseCallback

設定滑鼠事件的回呼函數

#define CV_EVENT_MOUSEMOVE      0#define CV_EVENT_LBUTTONDOWN    1#define CV_EVENT_RBUTTONDOWN    2#define CV_EVENT_MBUTTONDOWN    3#define CV_EVENT_LBUTTONUP      4#define CV_EVENT_RBUTTONUP      5#define CV_EVENT_MBUTTONUP      6#define CV_EVENT_LBUTTONDBLCLK  7#define CV_EVENT_RBUTTONDBLCLK  8#define CV_EVENT_MBUTTONDBLCLK  9#define CV_EVENT_FLAG_LBUTTON   1#define CV_EVENT_FLAG_RBUTTON   2#define CV_EVENT_FLAG_MBUTTON   4#define CV_EVENT_FLAG_CTRLKEY   8#define CV_EVENT_FLAG_SHIFTKEY  16#define CV_EVENT_FLAG_ALTKEY    32CV_EXTERN_C_FUNCPTR( void (*CvMouseCallback )(int event, int x, int y, int flags, void* param) );void cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse, void* param=NULL );
window_name
視窗的名字。
on_mouse
指定視窗裡每次滑鼠時間發生的時候,被調用的函數指標。這個函數的原型應該為

void Foo(int event, int x, int y, int flags, void* param);

其中eventCV_EVENT_*變數之一, xy是滑鼠指標在映像座標系的座標(不是視窗座標系), flagsCV_EVENT_FLAG的組合, param是使用者定義的傳遞到cvSetMouseCallback函數調用的參數。

param
使用者定義的傳遞到回呼函數的參數。

函數cvSetMouseCallback設定指定視窗滑鼠事件發生時的回呼函數。詳細使用方法,請參考opencv/samples/c/ffilldemo.c demo。

cvWaitKey

等待按鍵事件

int cvWaitKey( int delay=0 );
delay
延遲的毫秒數。

函數cvWaitKey無限制的等待按鍵事件(delay<=0時);或者延遲"delay"毫秒。傳回值為被按鍵的值,如果超過指定時間則返回-1。

注釋:這個函數是HighGUI中唯一能夠擷取和操作事件的函數,所以在一般的事件處理中,它需要周期地被調用,除非HighGUI被用在某些能夠處理事件的環境中。

讀取與儲存映像cvLoadImage

從檔案中讀取映像

IplImage* cvLoadImage( const char* filename, int iscolor=1 );
filename
要被讀入的檔案的檔案名稱。
iscolor
指定讀入映像的顏色:
如果 >0,讀入的映像將被強制轉換為3通道彩色映像;
如果為 0, 讀入的映像將被強制轉換為灰階映像;
如果 <0, 讀入的映像將與它本來顏色資訊一樣 (色彩通道數目由影像檔決定)。

函數cvLoadImage從指定檔案讀入映像,返回讀入映像的指標。目前支援如下檔案格式:

  • Windows位元影像檔案 - BMP, DIB;
  • JPEG檔案 - JPEG, JPG, JPE;
  • 攜帶型網狀圖片 - PNG;
  • 攜帶型映像格式 - PBM,PGM,PPM;
  • Sun rasters - SR,RAS;
  • TIFF檔案 - TIFF,TIF。

 

cvSaveImage

儲存映像到檔案

int cvSaveImage( const char* filename, const CvArr* image );
filename
檔案名稱。
image
要儲存的映像。

函數cvSaveImage儲存映像到指定檔案。映像格式的的選擇依賴於filename的副檔名,請參考cvLoadImage。只有8位單通道或者3通道(通道順序為'BGR' )可以使用這個函數儲存。如果格式,深度或者通道不符合要求,請先用cvCvtScalecvCvtColor轉換;或者使用通用的cvSave儲存映像為XML或者YAML格式。

視頻讀寫函數CvCapture

視頻擷取結構

typedef struct CvCapture CvCapture;

結構CvCapture 沒有公用介面,它只能被用來作為視頻擷取函數的一個參數。

cvCaptureFromFile

初始化從檔案中擷取視頻

CvCapture* cvCaptureFromFile( const char* filename );
filename
視頻檔案名稱。

函數cvCaptureFromFile給指定檔案中的視頻流分配和初始化CvCapture結構。

當分配的結構不再使用的時候,它應該使用cvReleaseCapture函數釋放掉。

cvCaptureFromCAM

初始化從網路攝影機中擷取視頻

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

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

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

cvReleaseCapture

釋放CvCapture結構

void cvReleaseCapture( CvCapture** capture );
capture
視頻擷取結構指標。

函數cvReleaseCapture釋放由cvCaptureFromFile 或者cvCaptureFromCAM申請的CvCapture結構。

cvGrabFrame

從網路攝影機或者視頻檔案中抓取幀

int cvGrabFrame( CvCapture* capture );
capture
視頻擷取結構指標。

函數cvGrabFrame從網路攝影機或者檔案中抓取幀。被抓取的幀在內部被儲存。這個函數的目的是快速的抓取幀,這一點對同時從幾個網路攝影機讀取資料的同步是很重要的。被抓取的幀可能是壓縮的格式(由網路攝影機/驅動定義),所以沒有被公開出來。如果要取回擷取的幀,請使用cvRetrieveFrame。

cvRetrieveFrame

取回由函數cvGrabFrame抓取的映像

IplImage* cvRetrieveFrame( CvCapture* capture );
capture
視頻擷取結構。

函數cvRetrieveFrame返回由函數cvGrabFrame 抓取的映像的指標。返回的映像不可以被使用者釋放或者修改。

cvQueryFrame

從網路攝影機或者檔案中抓取並返回一幀

IplImage* cvQueryFrame( CvCapture* capture );
capture
視頻擷取結構。

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

cvGetCaptureProperty

獲得視頻擷取結構的屬性

double cvGetCaptureProperty( CvCapture* capture, int property_id );
capture
視頻擷取結構。
property_id
屬性標識。可以是下面之一:
CV_CAP_PROP_POS_MSEC - 影片目前位置,為毫秒數或者視頻擷取時間戳記
CV_CAP_PROP_POS_FRAMES - 將被下一步解壓/擷取的幀索引,以0為起點
CV_CAP_PROP_POS_AVI_RATIO - 視頻檔案的相對位置(0 - 影片的開始,1 - 影片的結尾)
CV_CAP_PROP_FRAME_WIDTH - 視頻流中的幀寬度
CV_CAP_PROP_FRAME_HEIGHT - 視頻流中的幀高度
CV_CAP_PROP_FPS - 幀率
CV_CAP_PROP_FOURCC - 表示codec的四個字元 CV_CAP_PROP_FRAME_COUNT - 視頻檔案中幀的總數

函數cvGetCaptureProperty獲得網路攝影機或者視頻檔案的指定屬性。

譯者註:有時候這個函數在cvQueryFrame被調用一次後,再調用cvGetCaptureProperty才會返回正確的數值。

cvSetCaptureProperty

設定視頻擷取屬性

int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
capture
視頻擷取結構。
property_id
屬性標識符。可以是下面之一:
CV_CAP_PROP_POS_MSEC - 從檔案開始的位置,單位為毫秒
CV_CAP_PROP_POS_FRAMES - 單位為幀數的位置(只對視頻檔案有效)
CV_CAP_PROP_POS_AVI_RATIO - 視頻檔案的相對位置(0 - 影片的開始,1 - 影片的結尾)
CV_CAP_PROP_FRAME_WIDTH - 視頻流的幀寬度(只對網路攝影機有效)
CV_CAP_PROP_FRAME_HEIGHT - 視頻流的幀高度(只對網路攝影機有效)
CV_CAP_PROP_FPS - 幀率(只對網路攝影機有效)
CV_CAP_PROP_FOURCC - 表示codec的四個字元(只對網路攝影機有效)
value
屬性的值。

函數cvSetCaptureProperty設定指定視頻擷取的屬性。目前這個函數對視頻檔案只支援: CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO

cvCreateVideoWriter

建立視頻檔案寫入器

typedef struct CvVideoWriter CvVideoWriter;CvVideoWriter* cvCreateVideoWriter( const char* filename, int fourcc, double fps, CvSize frame_size, int is_color=1 );
filename
輸出視頻檔案名稱。
fourcc
四個字元用來表示壓縮幀的codec 例如, CV_FOURCC('P','I','M','1')是MPEG-1 codec, CV_FOURCC('M','J','P','G')是motion-jpeg codec等。 在Win32下,如果傳入參數-1,可以從一個對話方塊中選擇壓縮方法和壓縮參數。
fps
被建立視頻流的幀率。
frame_size
視頻流的大小。
is_color
如果非零,編碼器將希望得到彩色幀並進行編碼;否則,是灰階幀(只有在Windows下支援這個標誌)。

函數cvCreateVideoWriter建立視頻寫入器結構。

cvReleaseVideoWriter

釋放視頻寫入器

void cvReleaseVideoWriter( CvVideoWriter** writer );
writer
指向視頻寫入器的指標。

函數cvReleaseVideoWriter結束視頻檔案的寫入並且釋放這個結構。

cvWriteFrame

寫入一幀到一個視頻檔案中

int cvWriteFrame( CvVideoWriter* writer, const IplImage* image );
writer
視頻寫入器結構。
image
被寫入的幀。

函數cvWriteFrame寫入/附加到視頻檔案一幀。

實用函數與系統函數cvInitSystem

初始化HighGUI

int cvInitSystem( int argc, char** argv );
argc
命令列參數個數。
argv
命令列參數數組。

函數cvInitSystem初始化HighGUI。如果在第一個視窗被建立前這個函數不能被使用者顯式地調用,這個函數將以參數argc=0,argv=NULL隱式地被調用。在Win32下,沒有必要顯式調用這個函數。在X Window下,參數也許被用來自訂一個HighGUI視窗和控制項的外觀。

cvConvertImage

Converts one image to another with optional vertical flip

void cvConvertImage( const CvArr* src, CvArr* dst, int flags=0 );
src
輸入映像。
dst
靶心圖表像。必須為單通道或者3通道8位元影像像。
flags
操作標誌:
CV_CVTIMG_FLIP - 垂直翻轉映像。 CV_CVTIMG_SWAP_RB - 交換紅藍通道。 在OpenCV中,彩色映像的通道順序是 BGR 然而在一些系統中,在顯式映像之前通道順序應該被翻轉為 (cvShowImage能夠自動轉換)。

函數cvConvertImage轉換一幅映像到另一幅映像,如果需要的話可以垂直翻轉映像。這個函數被cvShowImage使用。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.