【opencv学习之十一】opencv: HighGUI参考手册
2017-09-17 12:34
471 查看
内容收集于网络:
HighGUI概述HighGUI概述简单图形界面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_nametrackbar的名字。window_nametrackbar父窗口的名字。函数 cvGetTrackbarPos返回指定trackbar的当前位置。 cvSetTrackbarPos设置trackbar位置void cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos ); trackbar_nametrackbar的名字。window_nametrackbar父窗口的名字。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 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指定窗口里每次鼠标时间发生的时候,被调用的函数指针。 这个函数的原型应该为 void Foo(int event, int x, int y, int flags, void* param); 其中 event是 CV_EVENT_*变量之一, x和 y是鼠标指针在图像坐标系的坐标(不是窗口坐标系), flags是 CV_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' ) 可以使用这个函数保存。 如果格式,深度或者通道不符合要求,请先用 cvCvtScale和 cvCvtColor转换; 或者使用通用的 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 创建视频文件写入器 |
相关文章推荐
- OpenCV 之 HighGUI 参考手册
- OpenCV学习笔记17 OpenCV高级GUI和多媒体模块 HIGHGUI MODULE (一)
- OpenCv基础学习笔记之一[highgui_c.h]
- OpenCV学习笔记:opencv_highgui模块
- 【Ubuntu+OpenCV】HighGUI之trackbar(滑动条)的创建--学习笔记【2】
- OpenCV学习笔记18 OpenCV高级GUI和多媒体模块 HIGHGUI MODULE (二)
- OpenCV学习笔记(三十)——解开VideoInput面纱highgui
- OpenCV学习笔记:opencv_highgui模块
- OpenCv学习笔记(八)---细说HighGUI(图像用户界面)之滑动条createTrackbar()详解
- 【opencv学习笔记四】opencv3.4.0图形用户接口highgui函数解析
- OpenCV学习笔记---HighGUI的初步
- OpenCV学习HighGUI
- OpenCV学习笔记(十)——图形交互和媒体接口HighGUI
- OpenCV学习——Highgui演示-简单绘制矩形
- opencv学习HighGUI图形用户界面初步【1】
- 四、openCV学习笔记(High-level GUI and Media I/O)
- 【学习OpenCV】——highgui
- opencv学习笔记2:HighGUI
- 学习OpenCV——去除imshow的内部细小边框(修改highgui)
- opencv学习-highgui-video视频操作