HighGUI参考手册.docx

上传人:b****7 文档编号:23926596 上传时间:2023-05-22 格式:DOCX 页数:14 大小:19.68KB
下载 相关 举报
HighGUI参考手册.docx_第1页
第1页 / 共14页
HighGUI参考手册.docx_第2页
第2页 / 共14页
HighGUI参考手册.docx_第3页
第3页 / 共14页
HighGUI参考手册.docx_第4页
第4页 / 共14页
HighGUI参考手册.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

HighGUI参考手册.docx

《HighGUI参考手册.docx》由会员分享,可在线阅读,更多相关《HighGUI参考手册.docx(14页珍藏版)》请在冰豆网上搜索。

HighGUI参考手册.docx

HighGUI参考手册

HighGUI参考手册

中文翻译者:

∙于仕琪,中科院自动化所自由软件协会

∙张兆翔,中科院自动化所自由软件协会

∙简单图形界面

∙读取与保存图像

∙视频读写

∙实用函数与系统函数

∙按字母顺序排列的函数列表

HighGUI概述

TODO

简单图形界面

cvNamedWindow

创建窗口

intcvNamedWindow(constchar*name,intflags);

name

窗口的名字,它被用来区分不同的窗口,并被显示为窗口标题。

flags

窗口属性标志。

目前唯一支持的标志是CV_WINDOW_AUTOSIZE。

当这个标志被设置后,如果用户不能手动改变窗口大小,窗口大小会自动调整以适合被显示图像(参考cvShowImage)。

函数cvNamedWindow创建一个可以放置图像和trackbar的窗口。

被创建的窗口可以通过它们的名字被引用。

如果已经存在这个名字的窗口,这个函数将不做任何事情。

cvDestroyWindow

销毁一个窗口

voidcvDestroyWindow(constchar*name);

name

要被销毁的窗口的名字。

函数cvDestroyWindow销毁指定名字的窗口。

cvDestroyAllWindows

销毁所有HighGUI窗口

voidcvDestroyAllWindows(void);

函数cvDestroyAllWindows销毁所有已经打开的HighGUI窗口。

cvResizeWindow

设定窗口大小

voidcvResizeWindow(constchar*name,intwidth,intheight);

name

将被设置窗口的名字。

width

新的窗口宽度。

height

新的窗口高度。

函数cvResizeWindow改变窗口的大小。

cvMoveWindow

设定窗口的位置

voidcvMoveWindow(constchar*name,intx,inty);

name

将被设置的窗口的名字。

x

窗口左上角的x坐标。

y

窗口左上角的y坐标。

函数cvMoveWindow改变窗口的位置。

cvGetWindowHandle

通过名字获取窗口句柄

void*cvGetWindowHandle(constchar*name);

name

窗口名字。

函数cvGetWindowHandle返回原始的窗口句柄(在Win32情况下返回HWND,GTK+情况下返回GtkWidget)

cvGetWindowName

通过句柄获取窗口的名字

constchar*cvGetWindowName(void*window_handle);

window_handle

窗口句柄。

给定函数cvGetWindowName一个窗口的句柄(在Win32情况下是HWND,GTK+情况下是GtkWidget),函数返回窗口的名字。

cvShowImage

在指定窗口中显示图像

voidcvShowImage(constchar*name,constCvArr*image);

name

窗口的名字。

image

被显示的图像。

函数cvShowImage在指定窗口中显示图像。

如果窗口创建的时候被设定标志CV_WINDOW_AUTOSIZE,那么图像将以原始尺寸显示;否则,图像将被伸缩以适合窗口大小。

cvCreateTrackbar

创建trackbar并将它添加到指定的窗口。

CV_EXTERN_C_FUNCPTR(void(*CvTrackbarCallback)(intpos));

intcvCreateTrackbar(constchar*trackbar_name,constchar*window_name,

int*value,intcount,CvTrackbarCallbackon_change);

trackbar_name

被创建的trackbar名字。

window_name

窗口名字,这个窗口将为被创建trackbar的父对象。

value

整数指针,它的值将反映滑块的位置。

这个变量指定创建时的滑块位置。

count

滑块位置的最大值。

最小值一直是0。

on_change

每次滑块位置被改变的时候,被调用函数的指针。

这个函数应该被声明为voidFoo(int);如果没有回调函数,这个值可以设为NULL。

函数cvCreateTrackbar用指定的名字和范围来创建trackbar(滑块或者范围控制),指定与trackbar位置同步的变量,并且指定当trackbar位置被改变的时候调用的回调函数。

被创建的trackbar显示在指定窗口的顶端。

cvGetTrackbarPos

获取trackbar的位置

intcvGetTrackbarPos(constchar*trackbar_name,constchar*window_name);

trackbar_name

trackbar的名字。

window_name

trackbar父窗口的名字。

函数cvGetTrackbarPos返回指定trackbar的当前位置。

cvSetTrackbarPos

设置trackbar位置

voidcvSetTrackbarPos(constchar*trackbar_name,constchar*window_name,intpos);

trackbar_name

trackbar的名字。

window_name

trackbar父窗口的名字。

pos

新的位置。

函数cvSetTrackbarPos设置指定trackbar的位置。

cvSetMouseCallback

设置鼠标事件的回调函数

#defineCV_EVENT_MOUSEMOVE0

#defineCV_EVENT_LBUTTONDOWN1

#defineCV_EVENT_RBUTTONDOWN2

#defineCV_EVENT_MBUTTONDOWN3

#defineCV_EVENT_LBUTTONUP4

#defineCV_EVENT_RBUTTONUP5

#defineCV_EVENT_MBUTTONUP6

#defineCV_EVENT_LBUTTONDBLCLK7

#defineCV_EVENT_RBUTTONDBLCLK8

#defineCV_EVENT_MBUTTONDBLCLK9

#defineCV_EVENT_FLAG_LBUTTON1

#defineCV_EVENT_FLAG_RBUTTON2

#defineCV_EVENT_FLAG_MBUTTON4

#defineCV_EVENT_FLAG_CTRLKEY8

#defineCV_EVENT_FLAG_SHIFTKEY16

#defineCV_EVENT_FLAG_ALTKEY32

CV_EXTERN_C_FUNCPTR(void(*CvMouseCallback)(intevent,intx,inty,intflags,void*param));

voidcvSetMouseCallback(constchar*window_name,CvMouseCallbackon_mouse,void*param=NULL);

window_name

窗口的名字。

on_mouse

指定窗口里每次鼠标时间发生的时候,被调用的函数指针。

这个函数的原型应该为

voidFoo(intevent,intx,inty,intflags,void*param);

其中event是CV_EVENT_*变量之一,x和y是鼠标指针在图像坐标系的坐标(不是窗口坐标系),flags是CV_EVENT_FLAG的组合,param是用户定义的传递到cvSetMouseCallback函数调用的参数。

param

用户定义的传递到回调函数的参数。

函数cvSetMouseCallback设定指定窗口鼠标事件发生时的回调函数。

详细使用方法,请参考opencv/samples/c/ffilldemo.cdemo。

cvWaitKey

等待按键事件

intcvWaitKey(intdelay=0);

delay

延迟的毫秒数。

函数cvWaitKey无限制的等待按键事件(delay<=0时);或者延迟"delay"毫秒。

返回值为被按键的值,如果超过指定时间则返回-1。

注释:

这个函数是HighGUI中唯一能够获取和操作事件的函数,所以在一般的事件处理中,它需要周期地被调用,除非HighGUI被用在某些能够处理事件的环境中。

读取与保存图像

cvLoadImage

从文件中读取图像

IplImage*cvLoadImage(constchar*filename,intiscolor=1);

filename

要被读入的文件的文件名。

iscolor

指定读入图像的颜色:

如果>0,读入的图像将被强制转换为3通道彩色图像;

如果为0,读入的图像将被强制转换为灰度图像;

如果<0,读入的图像将与它本来颜色信息一样(颜色通道数目由图像文件决定)。

函数cvLoadImage从指定文件读入图像,返回读入图像的指针。

目前支持如下文件格式:

∙Windows位图文件-BMP,DIB;

∙JPEG文件-JPEG,JPG,JPE;

∙便携式网络图片-PNG;

∙便携式图像格式-PBM,PGM,PPM;

∙Sunrasters-SR,RAS;

∙TIFF文件-TIFF,TIF。

cvSaveImage

保存图像到文件

intcvSaveImage(constchar*filename,constCvArr*image);

filename

文件名。

image

要保存的图像。

函数cvSaveImage保存图像到指定文件。

图像格式的的选择依赖于filename的扩展名,请参考cvLoadImage。

只有8位单通道或者3通道(通道顺序为'BGR')可以使用这个函数保存。

如果格式,深度或者通道不符合要求,请先用cvCvtScale和cvCvtColor转换;或者使用通用的cvSave保存图像为XML或者YAML格式。

视频读写函数

CvCapture

视频获取结构

typedefstructCvCaptureCvCapture;

结构CvCapture没有公共接口,它只能被用来作为视频获取函数的一个参数。

cvCaptureFromFile

初始化从文件中获取视频

CvCapture*cvCaptureFromFile(constchar*filename);

filename

视频文件名。

函数cvCaptureFromFile给指定文件中的视频流分配和初始化CvCapture结构。

当分配的结构不再使用的时候,它应该使用cvReleaseCapture函数释放掉。

cvCaptureFromCAM

初始化从摄像头中获取视频

CvCapture*cvCaptureFromCAM(intindex);

index

要使用的摄像头索引。

如果只有一个摄像头或者用哪个摄像头也无所谓,那使用参数-1应该便可以。

函数cvCaptureFromCAM给从摄像头的视频流分配和初始化CvCapture结构。

目前在Windows下可使用两种接口:

VideoforWindows(VFW)和MatroxImagingLibrary(MIL);Linux下也有两种接口:

V4L和FireWire(IEEE1394)。

释放这个结构,使用函数cvReleaseCapture。

cvReleaseCapture

释放CvCapture结构

voidcvReleaseCapture(CvCapture**capture);

capture

视频获取结构指针。

函数cvReleaseCapture释放由cvCaptureFromFile或者cvCaptureFromCAM申请的CvCapture结构。

cvGrabFrame

从摄像头或者视频文件中抓取帧

intcvGrabFrame(CvCapture*capture);

capture

视频获取结构指针。

函数cvGrabFrame从摄像头或者文件中抓取帧。

被抓取的帧在内部被存储。

这个函数的目的是快速的抓取帧,这一点对同时从几个摄像头读取数据的同步是很重要的。

被抓取的帧可能是压缩的格式(由摄像头/驱动定义),所以没有被公开出来。

如果要取回获取的帧,请使用cvRetrieveFrame。

cvRetrieveFrame

取回由函数cvGrabFrame抓取的图像

IplImage*cvRetrieveFrame(CvCapture*capture);

capture

视频获取结构。

函数cvRetrieveFrame返回由函数cvGrabFrame抓取的图像的指针。

返回的图像不可以被用户释放或者修改。

cvQueryFrame

从摄像头或者文件中抓取并返回一帧

IplImage*cvQueryFrame(CvCapture*capture);

capture

视频获取结构。

函数cvQueryFrame从摄像头或者文件中抓取一帧,然后解压并返回这一帧。

这个函数仅仅是函数cvGrabFrame和函数cvRetrieveFrame在一起调用的组合。

返回的图像不可以被用户释放或者修改。

cvGetCaptureProperty

获得视频获取结构的属性

doublecvGetCaptureProperty(CvCapture*capture,intproperty_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

设置视频获取属性

intcvSetCaptureProperty(CvCapture*capture,intproperty_id,doublevalue);

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

创建视频文件写入器

typedefstructCvVideoWriterCvVideoWriter;

CvVideoWriter*cvCreateVideoWriter(constchar*filename,intfourcc,doublefps,CvSizeframe_size,intis_color=1);

filename

输出视频文件名。

fourcc

四个字符用来表示压缩帧的codec例如,CV_FOURCC('P','I','M','1')是MPEG-1codec,CV_FOURCC('M','J','P','G')是motion-jpegcodec等。

在Win32下,如果传入参数-1,可以从一个对话框中选择压缩方法和压缩参数。

fps

被创建视频流的帧率。

frame_size

视频流的大小。

is_color

如果非零,编码器将希望得到彩色帧并进行编码;否则,是灰度帧(只有在Windows下支持这个标志)。

函数cvCreateVideoWriter创建视频写入器结构。

cvReleaseVideoWriter

释放视频写入器

voidcvReleaseVideoWriter(CvVideoWriter**writer);

writer

指向视频写入器的指针。

函数cvReleaseVideoWriter结束视频文件的写入并且释放这个结构。

cvWriteFrame

写入一帧到一个视频文件中

intcvWriteFrame(CvVideoWriter*writer,constIplImage*image);

writer

视频写入器结构。

image

被写入的帧。

函数cvWriteFrame写入/附加到视频文件一帧。

实用函数与系统函数

cvInitSystem

初始化HighGUI

intcvInitSystem(intargc,char**argv);

argc

命令行参数个数。

argv

命令行参数数组。

函数cvInitSystem初始化HighGUI。

如果在第一个窗口被创建前这个函数不能被用户显式地调用,这个函数将以参数argc=0,argv=NULL隐式地被调用。

在Win32下,没有必要显式调用这个函数。

在XWindow下,参数也许被用来自定义一个HighGUI窗口和控件的外观。

cvConvertImage

Convertsoneimagetoanotherwithoptionalverticalflip

voidcvConvertImage(constCvArr*src,CvArr*dst,intflags=0);

src

输入图像。

dst

目标图像。

必须为单通道或者3通道8位图像。

flags

操作标志:

CV_CVTIMG_FLIP-垂直翻转图像。

CV_CVTIMG_SWAP_RB-交换红蓝通道。

在OpenCV中,彩色图像的通道顺序是BGR然而在一些系统中,在显式图像之前通道顺序应该被翻转为(cvShowImage能够自动转换)。

函数cvConvertImage转换一幅图像到另一幅图像,如果需要的话可以垂直翻转图像。

这个函数被cvShowImage使用。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高中教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1