?? opencv highgui參考手冊.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0082)http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm -->
<HTML><HEAD><TITLE>OpenCV: HighGUI參考手冊</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312"><LINK
href="OpenCV HighGUI參考手冊.files/opencvref.css" type=text/css charset=gbk
rel=STYLESHEET>
<META content="MSHTML 6.00.2900.2180" name=GENERATOR></HEAD>
<BODY>
<H1>HighGUI參考手冊</H1>
<HR>
中文翻譯者:
<UL>
<LI><A href="mailto:yushiqi@yahoo.com.cn">于仕琪</A>,<A
href="http://fsa.ia.ac.cn/">中科院自動化所自由軟件協(xié)會</A>
<LI>張兆翔,<A href="http://fsa.ia.ac.cn/">中科院自動化所自由軟件協(xié)會</A> </LI></UL>
<HR>
<UL>
<LI><A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#highgui_gui">簡單圖形界面</A>
<LI><A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#highgui_loadsave">讀取與保存圖像</A>
<LI><A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#highgui_video">視頻讀寫</A>
<LI><A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#highgui_utils">實用函數(shù)與系統(tǒng)函數(shù)</A>
<LI><A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#highgui_func_index">按字母順序排列的函數(shù)列表</A>
</LI></UL>
<HR>
<H2><A name=highgui_overview>HighGUI概述</A></H2>
<P>TODO</P>
<HR>
<H2><A name=highgui_gui>簡單圖形界面</A></H2>
<HR>
<H3><A name=decl_cvNamedWindow>cvNamedWindow</A></H3>
<P class=Blurb>創(chuàng)建窗口</P><PRE>int cvNamedWindow( const char* name, int flags );
</PRE>
<DL>
<DT>name
<DD>窗口的名字,它被用來區(qū)分不同的窗口,并被顯示為窗口標(biāo)題。
<DT>flags
<DD>窗口屬性標(biāo)志。目前唯一支持的標(biāo)志是<CODE>CV_WINDOW_AUTOSIZE</CODE>。當(dāng)這個標(biāo)志被設(shè)置后,如果用戶不能手動改變窗口大小,窗口大小會自動調(diào)整以適合被顯示圖像(參考<A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#decl_cvShowImage">cvShowImage</A>)。
</DD></DL>
<P>函數(shù)<CODE>cvNamedWindow</CODE>創(chuàng)建一個可以放置圖像和trackbar的窗口。被創(chuàng)建的窗口可以通過它們的名字被引用。 </P>
<P>如果已經(jīng)存在這個名字的窗口,這個函數(shù)將不做任何事情。</P>
<HR>
<H3><A name=decl_cvDestroyWindow>cvDestroyWindow</A></H3>
<P class=Blurb>銷毀一個窗口</P><PRE>void cvDestroyWindow( const char* name );
</PRE>
<DL>
<DT>name
<DD>要被銷毀的窗口的名字。 </DD></DL>
<P>函數(shù)<CODE>cvDestroyWindow</CODE>銷毀指定名字的窗口。 </P>
<HR>
<H3><A name=decl_cvDestroyAllWindows>cvDestroyAllWindows</A></H3>
<P class=Blurb>銷毀所有HighGUI窗口</P><PRE>void cvDestroyAllWindows(void);
</PRE>
<P>函數(shù)<CODE>cvDestroyAllWindows</CODE>銷毀所有已經(jīng)打開的HighGUI窗口。 </P>
<HR>
<H3><A name=decl_cvResizeWindow>cvResizeWindow</A></H3>
<P class=Blurb>設(shè)定窗口大小</P><PRE>void cvResizeWindow( const char* name, int width, int height );
</PRE>
<DL>
<DT>name
<DD>將被設(shè)置窗口的名字。
<DT>width
<DD>新的窗口寬度。
<DT>height
<DD>新的窗口高度。 </DD></DL>
<P>函數(shù)<CODE>cvResizeWindow</CODE>改變窗口的大小。 </P>
<HR>
<H3><A name=decl_cvMoveWindow>cvMoveWindow</A></H3>
<P class=Blurb>設(shè)定窗口的位置</P><PRE>void cvMoveWindow( const char* name, int x, int y );
</PRE>
<DL>
<DT>name
<DD>將被設(shè)置的窗口的名字。
<DT>x
<DD>窗口左上角的x坐標(biāo)。
<DT>y
<DD>窗口左上角的y坐標(biāo)。 </DD></DL>
<P>函數(shù)<CODE>cvMoveWindow</CODE>改變窗口的位置。 </P>
<HR>
<H3><A name=decl_cvGetWindowHandle>cvGetWindowHandle</A></H3>
<P class=Blurb>通過名字獲取窗口句柄</P><PRE>void* cvGetWindowHandle( const char* name );
</PRE>
<DL>
<DT>name
<DD>窗口名字。 </DD></DL>
<P>函數(shù)<CODE>cvGetWindowHandle</CODE>返回原始的窗口句柄(在Win32情況下返回HWND,GTK+情況下返回GtkWidget)
</P>
<HR>
<H3><A name=decl_cvGetWindowName>cvGetWindowName</A></H3>
<P class=Blurb>通過句柄獲取窗口的名字</P><PRE>const char* cvGetWindowName( void* window_handle );
</PRE>
<DL>
<DT>window_handle
<DD>窗口句柄。 </DD></DL>
<P>給定函數(shù)<CODE>cvGetWindowName</CODE>一個窗口的句柄(在Win32情況下是HWND,GTK+情況下是GtkWidget),函數(shù)返回窗口的名字。
</P>
<HR>
<H3><A name=decl_cvShowImage>cvShowImage</A></H3>
<P class=Blurb>在指定窗口中顯示圖像</P><PRE>void cvShowImage( const char* name, const CvArr* image );
</PRE>
<DL>
<DT>name
<DD>窗口的名字。
<DT>image
<DD>被顯示的圖像。 </DD></DL>
<P>函數(shù)<CODE>cvShowImage</CODE>
在指定窗口中顯示圖像。如果窗口創(chuàng)建的時候被設(shè)定標(biāo)志<CODE>CV_WINDOW_AUTOSIZE</CODE>,那么圖像將以原始尺寸顯示;否則,圖像將被伸縮以適合窗口大小。
</P>
<HR>
<H3><A name=decl_cvCreateTrackbar>cvCreateTrackbar</A></H3>
<P class=Blurb>創(chuàng)建trackbar并將它添加到指定的窗口。</P><PRE>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 );
</PRE>
<DL>
<DT>trackbar_name
<DD>被創(chuàng)建的trackbar名字。
<DT>window_name
<DD>窗口名字,這個窗口將為被創(chuàng)建trackbar的父對象。
<DT>value
<DD>整數(shù)指針,它的值將反映滑塊的位置。這個變量指定創(chuàng)建時的滑塊位置。
<DT>count
<DD>滑塊位置的最大值。最小值一直是0。
<DT>on_change
<DD>每次滑塊位置被改變的時候,被調(diào)用函數(shù)的指針。這個函數(shù)應(yīng)該被聲明為<CODE>void Foo(int);</CODE>
如果沒有回調(diào)函數(shù),這個值可以設(shè)為NULL。 </DD></DL>
<P>函數(shù)<CODE>cvCreateTrackbar</CODE>用指定的名字和范圍來創(chuàng)建trackbar(滑塊或者范圍控制),指定與trackbar位置同步的變量,并且指定當(dāng)trackbar位置被改變的時候調(diào)用的回調(diào)函數(shù)。被創(chuàng)建的trackbar顯示在指定窗口的頂端。
</P>
<HR>
<H3><A name=decl_cvGetTrackbarPos>cvGetTrackbarPos</A></H3>
<P class=Blurb>獲取trackbar的位置</P><PRE>int cvGetTrackbarPos( const char* trackbar_name, const char* window_name );
</PRE>
<DL>
<DT>trackbar_name
<DD>trackbar的名字。
<DT>window_name
<DD>trackbar父窗口的名字。 </DD></DL>
<P>函數(shù)<CODE>cvGetTrackbarPos</CODE>返回指定trackbar的當(dāng)前位置。</P>
<HR>
<H3><A name=decl_cvSetTrackbarPos>cvSetTrackbarPos</A></H3>
<P class=Blurb>設(shè)置trackbar位置</P><PRE>void cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );
</PRE>
<DL>
<DT>trackbar_name
<DD>trackbar的名字。
<DT>window_name
<DD>trackbar父窗口的名字。
<DT>pos
<DD>新的位置。 </DD></DL>
<P>函數(shù)<CODE>cvSetTrackbarPos</CODE>設(shè)置指定trackbar的位置。</P>
<HR>
<H3><A name=decl_cvSetMouseCallback>cvSetMouseCallback</A></H3>
<P class=Blurb>設(shè)置鼠標(biāo)事件的回調(diào)函數(shù)</P><PRE>#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 32
CV_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 );
</PRE>
<DL>
<DT>window_name
<DD>窗口的名字。
<DT>on_mouse
<DD>指定窗口里每次鼠標(biāo)時間發(fā)生的時候,被調(diào)用的函數(shù)指針。這個函數(shù)的原型應(yīng)該為 <PRE>void Foo(int event, int x, int y, int flags, void* param);</PRE>其中<CODE>event</CODE>是
<CODE>CV_EVENT_*</CODE>變量之一,
<CODE>x</CODE>和<CODE>y</CODE>是鼠標(biāo)指針在圖像坐標(biāo)系的坐標(biāo)(不是窗口坐標(biāo)系),
<CODE>flags</CODE>是<CODE>CV_EVENT_FLAG</CODE>的組合,
<CODE>param</CODE>是用戶定義的傳遞到<CODE>cvSetMouseCallback</CODE>函數(shù)調(diào)用的參數(shù)。
<DT>param
<DD>用戶定義的傳遞到回調(diào)函數(shù)的參數(shù)。 </DD></DL>
<P>函數(shù)<CODE>cvSetMouseCallback</CODE>設(shè)定指定窗口鼠標(biāo)事件發(fā)生時的回調(diào)函數(shù)。詳細(xì)使用方法,請參考<A
href="http://fsa.ia.ac.cn/opencv-doc-cn/samples/c/ffilldemo.c">opencv/samples/c/ffilldemo.c</A>
demo。</P>
<HR>
<H3><A name=decl_cvWaitKey>cvWaitKey</A></H3>
<P class=Blurb>等待按鍵事件</P><PRE>int cvWaitKey( int delay=0 );
</PRE>
<DL>
<DT>delay
<DD>延遲的毫秒數(shù)。 </DD></DL>
<P>函數(shù)<CODE>cvWaitKey</CODE>無限制的等待按鍵事件(delay<=0時);或者延遲"delay"毫秒。返回值為被按鍵的值,如果超過指定時間則返回-1。
</P>
<P><B>注釋</B>:這個函數(shù)是HighGUI中唯一能夠獲取和操作事件的函數(shù),所以在一般的事件處理中,它需要周期地被調(diào)用,除非HighGUI被用在某些能夠處理事件的環(huán)境中。
</P>
<HR>
<H2><A name=highgui_loadsave>讀取與保存圖像</A></H2>
<HR>
<H3><A name=decl_cvLoadImage>cvLoadImage</A></H3>
<P class=Blurb>從文件中讀取圖像</P><PRE>IplImage* cvLoadImage( const char* filename, int iscolor=1 );
</PRE>
<DL>
<DT>filename
<DD>要被讀入的文件的文件名。
<DT>iscolor
<DD>指定讀入圖像的顏色:<BR>如果 >0,讀入的圖像將被強(qiáng)制轉(zhuǎn)換為3通道彩色圖像;<BR>如果為 0,
讀入的圖像將被強(qiáng)制轉(zhuǎn)換為灰度圖像;<BR>如果 <0, 讀入的圖像將與它本來顏色信息一樣 (顏色通道數(shù)目由圖像文件決定)。 </DD></DL>
<P>函數(shù)<CODE>cvLoadImage</CODE>從指定文件讀入圖像,返回讀入圖像的指針。目前支持如下文件格式:
<UL>
<LI>Windows位圖文件 - BMP, DIB;
<LI>JPEG文件 - JPEG, JPG, JPE;
<LI>便攜式網(wǎng)絡(luò)圖片 - PNG;
<LI>便攜式圖像格式 - PBM,PGM,PPM;
<LI>Sun rasters - SR,RAS;
<LI>TIFF文件 - TIFF,TIF。 </LI></UL>
<P></P>
<HR>
<H3><A name=decl_cvSaveImage>cvSaveImage</A></H3>
<P class=Blurb>保存圖像到文件</P><PRE>int cvSaveImage( const char* filename, const CvArr* image );
</PRE>
<DL>
<DT>filename
<DD>文件名。
<DT>image
<DD>要保存的圖像。 </DD></DL>
<P>函數(shù)<CODE>cvSaveImage</CODE>保存圖像到指定文件。圖像格式的的選擇依賴于<CODE>filename</CODE>的擴(kuò)展名,請參考<A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#decl_cvLoadImage">cvLoadImage</A>。只有8位單通道或者3通道(通道順序為'BGR'
)可以使用這個函數(shù)保存。如果格式,深度或者通道不符合要求,請先用<CODE>cvCvtScale</CODE>
和<CODE>cvCvtColor</CODE>轉(zhuǎn)換;或者使用通用的<CODE>cvSave</CODE>保存圖像為XML或者YAML格式。 </P>
<HR>
<H2><A name=highgui_video>視頻讀寫函數(shù)</A></H2>
<HR>
<H3><A name=decl_CvCapture>CvCapture</A></H3>
<P class=Blurb>視頻獲取結(jié)構(gòu)</P><PRE>typedef struct CvCapture CvCapture;
</PRE>
<P>結(jié)構(gòu)<A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#decl_CvCapture">CvCapture</A>
沒有公共接口,它只能被用來作為視頻獲取函數(shù)的一個參數(shù)。 </P>
<HR>
<H3><A name=decl_cvCaptureFromFile>cvCaptureFromFile</A></H3>
<P class=Blurb>初始化從文件中獲取視頻</P><PRE>CvCapture* cvCaptureFromFile( const char* filename );
</PRE>
<DL>
<DT>filename
<DD>視頻文件名。 </DD></DL>
<P>函數(shù)<CODE>cvCaptureFromFile</CODE>給指定文件中的視頻流分配和初始化CvCapture結(jié)構(gòu)。 </P>
<P>當(dāng)分配的結(jié)構(gòu)不再使用的時候,它應(yīng)該使用<A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#decl_cvReleaseCapture">cvReleaseCapture</A>函數(shù)釋放掉。
</P>
<HR>
<H3><A name=decl_cvCaptureFromCAM>cvCaptureFromCAM</A></H3>
<P class=Blurb>初始化從攝像頭中獲取視頻</P><PRE>CvCapture* cvCaptureFromCAM( int index );
</PRE>
<DL>
<DT>index
<DD>要使用的攝像頭索引。如果只有一個攝像頭或者用哪個攝像頭也無所謂,那使用參數(shù)-1應(yīng)該便可以。 </DD></DL>
<P>函數(shù)<CODE>cvCaptureFromCAM</CODE>給從攝像頭的視頻流分配和初始化CvCapture結(jié)構(gòu)。目前在Windows下可使用兩種接口:Video
for Windows(VFW)和Matrox Imaging Library(MIL);
Linux下也有兩種接口:V4L和FireWire(IEEE1394)。 </P>
<P>釋放這個結(jié)構(gòu),使用函數(shù)<A
href="http://fsa.ia.ac.cn/opencv-doc-cn/opencv-doc-cn-0.9.7/ref/opencvref_highgui.cn.htm#decl_cvReleaseCapture">cvReleaseCapture</A>。</P>
<HR>
<H3><A name=decl_cvReleaseCapture>cvReleaseCapture</A></H3>
<P class=Blurb>釋放CvCapture結(jié)構(gòu)</P><PRE>void cvReleaseCapture( CvCapture** capture );
</PRE>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -