小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

OpenCV: HighGUI參考手冊

 LSS133LSS 2014-05-04

HighGUI參考手冊


中文翻譯者:

HighGUI概述HighGUI概述

TODO


簡單圖形界面


cvNamedWindow

創(chuàng)建窗口

int cvNamedWindow( const char* name, int flags );
name
窗口的名字,它被用來區(qū)分不同的窗口,并被顯示為窗口標題。
flags
窗口屬性標志。目前唯一支持的標志是CV_WINDOW_AUTOSIZE。 當這個標志被設(shè)置后,如果用戶不能手動改變窗口大小,窗口大小會自動調(diào)整以適合被顯示圖像 (參考cvShowImage)。

函數(shù)cvNamedWindow創(chuàng)建一個可以放置圖像和trackbar的窗口。 被創(chuàng)建的窗口可以通過它們的名字被引用。

如果已經(jīng)存在這個名字的窗口,這個函數(shù)將不做任何事情。


cvDestroyWindow

銷毀一個窗口

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

函數(shù)cvDestroyWindow銷毀指定名字的窗口。


cvDestroyAllWindows

銷毀所有HighGUI窗口

void cvDestroyAllWindows(void);

函數(shù)cvDestroyAllWindows銷毀所有已經(jīng)打開的HighGUI窗口。


cvResizeWindow

設(shè)定窗口大小

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

函數(shù)cvResizeWindow改變窗口的大小。


cvMoveWindow

設(shè)定窗口的位置

void cvMoveWindow( const char* name, int x, int y );
name
將被設(shè)置的窗口的名字。
x
窗口左上角的x坐標。
y
窗口左上角的y坐標。

函數(shù)cvMoveWindow改變窗口的位置。


cvGetWindowHandle

通過名字獲取窗口句柄

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

函數(shù)cvGetWindowHandle返回原始的窗口句柄(在Win32情況下返回HWND,GTK+情況下返回GtkWidget)


cvGetWindowName

通過句柄獲取窗口的名字

const char* cvGetWindowName( void* window_handle );
window_handle
窗口句柄。

給定函數(shù)cvGetWindowName一個窗口的句柄(在Win32情況下是HWND,GTK+情況下是GtkWidget), 函數(shù)返回窗口的名字。


cvShowImage

在指定窗口中顯示圖像

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

函數(shù)cvShowImage 在指定窗口中顯示圖像。 如果窗口創(chuàng)建的時候被設(shè)定標志CV_WINDOW_AUTOSIZE, 那么圖像將以原始尺寸顯示; 否則,圖像將被伸縮以適合窗口大小。


cvCreateTrackbar

創(chuàng)建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
被創(chuàng)建的trackbar名字。
window_name
窗口名字,這個窗口將為被創(chuàng)建trackbar的父對象。
value
整數(shù)指針,它的值將反映滑塊的位置。這個變量指定創(chuàng)建時的滑塊位置。
count
滑塊位置的最大值。最小值一直是0。
on_change
每次滑塊位置被改變的時候,被調(diào)用函數(shù)的指針。這個函數(shù)應(yīng)該被聲明為void Foo(int); 如果沒有回調(diào)函數(shù),這個值可以設(shè)為NULL。

函數(shù)cvCreateTrackbar用指定的名字和范圍來創(chuàng)建trackbar(滑塊或者范圍控制), 指定與trackbar位置同步的變量, 并且指定當trackbar位置被改變的時候調(diào)用的回調(diào)函數(shù)。 被創(chuàng)建的trackbar顯示在指定窗口的頂端。


cvGetTrackbarPos

獲取trackbar的位置

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

函數(shù)cvGetTrackbarPos返回指定trackbar的當前位置。


cvSetTrackbarPos

設(shè)置trackbar位置

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

函數(shù)cvSetTrackbarPos設(shè)置指定trackbar的位置。


cvSetMouseCallback

設(shè)置鼠標事件的回調(diào)函數(shù)

#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 );
window_name
窗口的名字。
on_mouse
指定窗口里每次鼠標時間發(fā)生的時候,被調(diào)用的函數(shù)指針。 這個函數(shù)的原型應(yīng)該為
void Foo(int event, int x, int y, int flags, void* param);
其中eventCV_EVENT_*變量之一, xy是鼠標指針在圖像坐標系的坐標(不是窗口坐標系), flagsCV_EVENT_FLAG的組合, param是用戶定義的傳遞到cvSetMouseCallback函數(shù)調(diào)用的參數(shù)。
param
用戶定義的傳遞到回調(diào)函數(shù)的參數(shù)。

函數(shù)cvSetMouseCallback設(shè)定指定窗口鼠標事件發(fā)生時的回調(diào)函數(shù)。 詳細使用方法,請參考opencv/samples/c/ffilldemo.c demo。


cvWaitKey

等待按鍵事件

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

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

注釋:這個函數(shù)是HighGUI中唯一能夠獲取和操作事件的函數(shù), 所以在一般的事件處理中,它需要周期地被調(diào)用, 除非HighGUI被用在某些能夠處理事件的環(huán)境中。


讀取與保存圖像


cvLoadImage

從文件中讀取圖像

IplImage* cvLoadImage( const char* filename, int iscolor=1 );
filename
要被讀入的文件的文件名。
iscolor
指定讀入圖像的顏色:
如果 >0,讀入的圖像將被強制轉(zhuǎn)換為3通道彩色圖像;
如果為 0, 讀入的圖像將被強制轉(zhuǎn)換為灰度圖像;
如果 <0, 讀入的圖像將與它本來顏色信息一樣 (顏色通道數(shù)目由圖像文件決定)。

函數(shù)cvLoadImage從指定文件讀入圖像,返回讀入圖像的指針。 目前支持如下文件格式:

  • Windows位圖文件 - BMP, DIB;
  • JPEG文件 - JPEG, JPG, JPE;
  • 便攜式網(wǎng)絡(luò)圖片 - PNG;
  • 便攜式圖像格式 - PBM,PGM,PPM;
  • Sun rasters - SR,RAS;
  • TIFF文件 - TIFF,TIF。


cvSaveImage

保存圖像到文件

int cvSaveImage( const char* filename, const CvArr* image );
filename
文件名。
image
要保存的圖像。

函數(shù)cvSaveImage保存圖像到指定文件。 圖像格式的的選擇依賴于filename的擴展名, 請參考cvLoadImage。 只有8位單通道或者3通道(通道順序為'BGR' ) 可以使用這個函數(shù)保存。 如果格式,深度或者通道不符合要求,請先用cvCvtScalecvCvtColor轉(zhuǎn)換; 或者使用通用的cvSave保存圖像為XML或者YAML格式。


視頻讀寫函數(shù)


CvCapture

視頻獲取結(jié)構(gòu)

typedef struct CvCapture CvCapture;

結(jié)構(gòu)CvCapture 沒有公共接口,它只能被用來作為視頻獲取函數(shù)的一個參數(shù)。


cvCaptureFromFile

初始化從文件中獲取視頻

CvCapture* cvCaptureFromFile( const char* filename );
filename
視頻文件名。

函數(shù)cvCaptureFromFile給指定文件中的視頻流分配和初始化CvCapture結(jié)構(gòu)。

當分配的結(jié)構(gòu)不再使用的時候,它應(yīng)該使用cvReleaseCapture函數(shù) 釋放掉。


cvCaptureFromCAM

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

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

函數(shù)cvCaptureFromCAM給從攝像頭的視頻流分配和初始化CvCapture結(jié)構(gòu)。 目前在Windows下可使用兩種接口:Video for Windows(VFW)和Matrox Imaging Library(MIL); Linux下也有兩種接口:V4L和FireWire(IEEE1394)。

釋放這個結(jié)構(gòu),使用函數(shù)cvReleaseCapture。


cvReleaseCapture

釋放CvCapture結(jié)構(gòu)

void cvReleaseCapture( CvCapture** capture );
capture
視頻獲取結(jié)構(gòu)指針。

函數(shù)cvReleaseCapture釋放由cvCaptureFromFile 或者cvCaptureFromCAM申請的CvCapture結(jié)構(gòu)。


cvGrabFrame

從攝像頭或者視頻文件中抓取幀

int cvGrabFrame( CvCapture* capture );
capture
視頻獲取結(jié)構(gòu)指針。

函數(shù)cvGrabFrame從攝像頭或者文件中抓取幀。 被抓取的幀在內(nèi)部被存儲。 這個函數(shù)的目的是快速的抓取幀, 這一點對同時從幾個攝像頭讀取數(shù)據(jù)的同步是很重要的。 被抓取的幀可能是壓縮的格式(由攝像頭/驅(qū)動定義),所以沒有被公開出來。 如果要取回獲取的幀,請使用cvRetrieveFrame。


cvRetrieveFrame

取回由函數(shù)cvGrabFrame抓取的圖像

IplImage* cvRetrieveFrame( CvCapture* capture );
capture
視頻獲取結(jié)構(gòu)。

函數(shù)cvRetrieveFrame返回由函數(shù)cvGrabFrame 抓取的圖像的指針。返回的圖像不可以被用戶釋放或者修改。


cvQueryFrame

從攝像頭或者文件中抓取并返回一幀

IplImage* cvQueryFrame( CvCapture* capture );
capture
視頻獲取結(jié)構(gòu)。

函數(shù)cvQueryFrame從攝像頭或者文件中抓取一幀,然后解壓并返回這一幀。 這個函數(shù)僅僅是函數(shù)cvGrabFrame和 函數(shù)cvRetrieveFrame在一起調(diào)用的組合。 返回的圖像不可以被用戶釋放或者修改。


cvGetCaptureProperty

獲得視頻獲取結(jié)構(gòu)的屬性

double cvGetCaptureProperty( CvCapture* capture, int property_id );
capture
視頻獲取結(jié)構(gòu)。
property_id
屬性標識??梢允窍旅嬷唬?br> CV_CAP_PROP_POS_MSEC - 影片目前位置,為毫秒數(shù)或者視頻獲取時間戳
CV_CAP_PROP_POS_FRAMES - 將被下一步解壓/獲取的幀索引,以0為起點
CV_CAP_PROP_POS_AVI_RATIO - 視頻文件的相對位置(0 - 影片的開始,1 - 影片的結(jié)尾)
CV_CAP_PROP_FRAME_WIDTH - 視頻流中的幀寬度
CV_CAP_PROP_FRAME_HEIGHT - 視頻流中的幀高度
CV_CAP_PROP_FPS - 幀率
CV_CAP_PROP_FOURCC - 表示codec的四個字符 CV_CAP_PROP_FRAME_COUNT - 視頻文件中幀的總數(shù)

函數(shù)cvGetCaptureProperty獲得攝像頭或者視頻文件的指定屬性。

譯者注:有時候這個函數(shù)在cvQueryFrame被調(diào)用一次后,再調(diào)用cvGetCaptureProperty才會返回正確的數(shù)值。


cvSetCaptureProperty

設(shè)置視頻獲取屬性

int cvSetCaptureProperty( CvCapture* capture, int property_id, double value );
capture
視頻獲取結(jié)構(gòu)。
property_id
屬性標識符??梢允窍旅嬷唬?br> CV_CAP_PROP_POS_MSEC - 從文件開始的位置,單位為毫秒
CV_CAP_PROP_POS_FRAMES - 單位為幀數(shù)的位置(只對視頻文件有效)
CV_CAP_PROP_POS_AVI_RATIO - 視頻文件的相對位置(0 - 影片的開始,1 - 影片的結(jié)尾)
CV_CAP_PROP_FRAME_WIDTH - 視頻流的幀寬度(只對攝像頭有效)
CV_CAP_PROP_FRAME_HEIGHT - 視頻流的幀高度(只對攝像頭有效)
CV_CAP_PROP_FPS - 幀率(只對攝像頭有效)
CV_CAP_PROP_FOURCC - 表示codec的四個字符(只對攝像頭有效)
value
屬性的值。

函數(shù)cvSetCaptureProperty設(shè)置指定視頻獲取的屬性。 目前這個函數(shù)對視頻文件只支持: CV_CAP_PROP_POS_MSEC, CV_CAP_PROP_POS_FRAMES, CV_CAP_PROP_POS_AVI_RATIO


cvCreateVideoWriter

創(chuàng)建視頻文件寫入器

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下,如果傳入?yún)?shù)-1,可以從一個對話框中選擇壓縮方法和壓縮參數(shù)。
fps
被創(chuàng)建視頻流的幀率。
frame_size
視頻流的大小。
is_color
如果非零,編碼器將希望得到彩色幀并進行編碼; 否則,是灰度幀(只有在Windows下支持這個標志)。

函數(shù)cvCreateVideoWriter創(chuàng)建視頻寫入器結(jié)構(gòu)。


cvReleaseVideoWriter

釋放視頻寫入器

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

函數(shù)cvReleaseVideoWriter結(jié)束視頻文件的寫入并且釋放這個結(jié)構(gòu)。


cvWriteFrame

寫入一幀到一個視頻文件中

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

函數(shù)cvWriteFrame寫入/附加到視頻文件一幀。


實用函數(shù)與系統(tǒng)函數(shù)


cvInitSystem

初始化HighGUI

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

函數(shù)cvInitSystem初始化HighGUI。 如果在第一個窗口被創(chuàng)建前這個函數(shù)不能被用戶顯式地調(diào)用, 這個函數(shù)將以參數(shù)argc=0,argv=NULL隱式地被調(diào)用。 在Win32下,沒有必要顯式調(diào)用這個函數(shù)。 在X Window下,參數(shù)也許被用來自定義一個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 - 垂直翻轉(zhuǎn)圖像。 CV_CVTIMG_SWAP_RB - 交換紅藍通道。 在OpenCV中,彩色圖像的通道順序是 BGR 然而在一些系統(tǒng)中,在顯式圖像之前通道順序應(yīng)該被翻轉(zhuǎn)為 (cvShowImage能夠自動轉(zhuǎn)換)。

函數(shù)cvConvertImage轉(zhuǎn)換一幅圖像到另一幅圖像,如果需要的話可以垂直翻轉(zhuǎn)圖像。 這個函數(shù)被cvShowImage使用。


按字母順序排列的函數(shù)列表


C

CaptureFromCAM ConvertImage CreateVideoWriter
CaptureFromFile CreateTrackbar

D

DestroyAllWindows DestroyWindow

G

GetCaptureProperty GetWindowHandle GrabFrame
GetTrackbarPos GetWindowName

I

InitSystem

L

LoadImage

M

MoveWindow

N

NamedWindow

Q

QueryFrame

R

ReleaseCapture ResizeWindow
ReleaseVideoWriter RetrieveFrame

S

SaveImage SetMouseCallback ShowImage
SetCaptureProperty SetTrackbarPos

W

WaitKey WriteFrame

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多