opencv2.2.0源代码(include文件)分析(1)

由于openCV2.2.0源文件很庞大,这里我只分析openCV2.2.0文件组织结构的各个模块的include文件(重点分析各个模块下引用的算法和实现的功能),而不是src文件。这里分析各个模块有助于更好的从整体把握和理解openCV2.2.0。这里只是自己做草稿部分,便于以后修改查找。有理解不对的,希望大家指出。--疯子_007

 

首先分析的是highgui目录下的highgui_c.h和highgui.cpp文件:

highgui_c.h分三部分:基本的GUI函数库,视频接口,和过时的函数库。基本的GUI函数库包括:创建窗体,设置窗体属性,获取窗体属性,在窗体内显示图片,改变窗体大小,移动窗体,销毁窗体(包括销毁所有窗体);获取给定句柄的窗体名,创建和显示滚动条,恢复和设置滚动条位置;鼠标回调事件,设置鼠标事件回调,枚举鼠标类型;载入图片,保存图片,改变图片结构;按键等待。视频接口包括:定义摄像头结构,通过视频文件获取帧,从摄像头获取视频文件,帧处理的特殊函数(cvRetrieveFrame),抓取帧,释放视频文件;恢复或者设置摄像头属性,返回摄像头类型;定义写视频指针结构体,四色编码,打开编码属性对话框,初始化写视频指针,将帧流写入写视频指针,释放写视频指针。过时的函数库。将一些功能相同的函数,重新命名,保持旧代码的连接性。

highgui.cpp在CV命名空间枚举相应的一些函数和定义了VideoCapture,VideoWriter类,采用面向对象的思想进行编程,更容易理解和整体把握。

 

详细分析如下: . /highgui/include/opencv2/highgui/highgui_c.h

基本GUI函数:

支持QT模块一些函数(省略)

创建窗体:CVAPI(int) cvNamedWindow( const char* name, int flags CV_DEFAULT(CV_WINDOW_AUTOSIZE) );

设置窗体属性:CVAPI(void) cvSetWindowProperty(const char* name, int prop_id, double prop_value);

获取窗体属性:cvGetWindowProperty(const char* name, int prop_id);

在窗体内显示图片:CVAPI(void) cvShowImage( const char* name, const CvArr* image );

改变窗体大小:CVAPI(void) cvResizeWindow( const char* name, int width, int height );

移动窗体大小:CVAPI(void) cvMoveWindow( const char* name, int x, int y );

销毁窗体(包括连接窗体的滚动条):CVAPI(void) cvDestroyWindow( const char* name );

销毁所有窗体:CVAPI(void) cvDestroyAllWindows(void);

获取该窗体句柄(命令行形式获取HWWD,图形窗口形式获取widget):CVAPI(void*) cvGetWindowHandle( const char* name );

获取给定句柄的窗体名:CVAPI(const char*) cvGetWindowName( void* window_handle );

 

位置回调定义1: typedef void (CV_CDECL *CvTrackbarCallback)(int pos);

在给定的窗体创建和显示滚动条1: CVAPI(int) cvCreateTrackbar( const char* trackbar_name, const char* window_name, int* value, int count, CvTrackbarCallback on_change CV_DEFAULT(NULL));

位置回调定义2: typedef void (CV_CDECL *CvTrackbarCallback2)(int pos, void* userdata);

在给定的窗体创建和显示滚动条2: CVAPI(int) cvCreateTrackbar2( const char* trackbar_name, const char* window_name,int* value, int count, CvTrackbarCallback2 on_change, void* userdata CV_DEFAULT(0));

恢复或者设置滚动条位置:CVAPI(int) cvGetTrackbarPos( const char* trackbar_name, const char* window_name ); CVAPI(void) cvSetTrackbarPos( const char* trackbar_name, const char* window_name, int pos );

枚举鼠标事件

enum

{

        CV_EVENT_MOUSEMOVE =0,// 鼠标移动

        CV_EVENT_LBUTTONDOWN =1,// 鼠标左击

        CV_EVENT_RBUTTONDOWN =2,// 鼠标右击

        CV_EVENT_MBUTTONDOWN =3,// 鼠标中键单价

        CV_EVENT_LBUTTONUP =4,//

       CV_EVENT_RBUTTONUP =5,//

       CV_EVENT_MBUTTONUP =6,//

       CV_EVENT_LBUTTONDBLCLK =7,// 鼠标左键双击

       CV_EVENT_RBUTTONDBLCLK =8,// 鼠标右键双击

      CV_EVENT_MBUTT

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值