第4章 细说HighGUI

创建窗口

1
2
3
4
5
6
int cvNameWindow(const char* name, int flags=CV_WINDOW_AUTOSIZE); // 创建窗口

void* cvGetWindowHandle(const char* name);
const char* cvGetWindowName(void* window_handle); // 获取窗口名称

void cvResizeWindow(const char* name, int width, int height); // 调整窗口大小

载入图像

1
2
3
IplImage* cvLoadImage(const char* filename, int iscolor=CV_LOAD_IMAGE_COLOR); // 从磁盘载入图像

int cvSaveImage(const char* filename, const CvArr* image); // 保存图像

显示图像

1
2
3
4
void cvShowImage(const char* name, const CvArr* image); // 显示图像
void cvMoveWindow(const char* name, int x, int y); // 将窗口移动到其左上角为x, y的位置
void cvDestroyAllWindows(void); // 释放所有窗口
int cvStartWindowThread(void); // 创建一个线程用来自动更新窗口以及处理其他窗口触发事件

鼠标事件

鼠标事件响应采用回调函数的方式来处理。即,为了可以响应鼠标点击事件,首先必须创建一个回调函数,使鼠标点击事件发生时,OpenCV可以调用这个函数。创建这个函数之后,需要在OpenCV中注册这个函数,以便特定窗口被触发鼠标事件以后,OpenCV可以正确调用这个函数。

1
2
void CvMouseCallback(int event, int x, int y, int flags, void* param); // 回调函数的定义
void cvSetMouseCallback(const char* window_name, CvMouseCallback on_mouse, void* param=NULL); // 注册回调函数

Sliders, Trackbars, Switches

滑动条的实现

1
2
3
4
5
6
// 创建滑动条函数
int cvCreateTrackbar(const char* trackbar_name, const char* window_name, int* value, int count, CvTrackbarCallback on_change);
// 读取滑动条的value值
int cvGetTrackbarPos(const char* trackbar_name, const char* window_name);
// 设置滑动条的value值
void cvSetTrackbarPos(const char* trackbar_name, const char* window_name, int pos);