opencv HighGUI模块详解

HighGUI模块说明

虽然OpenCV设计用于全尺寸应用程序,可以在功能丰富的UI框架(如Qt*、WinForms或Cocoa)中使用,也可以完全不使用任何UI,但有时需要快速尝试功能并将结果可视化。这就是HighGUI模块的设计目的。它提供了方便的界面:创建和操作可以显示图像并“记住”其内容的窗口(无需处理OS中的重新绘制事件)。在窗口中添加跟踪条,处理简单的鼠标事件以及键盘命令。

导入库

#include <opencv2/highgui.hpp>

函数

滚动条相关

int cv::createTrackbar( const String & 	 trackbarname,
					    const String & 	 winname,
					    int * 	         value,
					    int 	         count,
						TrackbarCallback onChange = 0,
						void * 	         userdata = 0 
)	
//说明:创建跟踪条并将其附加到指定的窗口。
//参数:
//		trackbarname 创建的轨迹栏的名称。
//		winname 将用作创建的跟踪条父级的窗口的名称
//		value 指向整数变量的可选指针,该变量的值反映滑块的位置。创建时,滑块位置由该变量定义
//		count 滑块的最大位置。最小位置始终为0。
//		onChange 指针指向每次滑块改变位置时要调用的函数。此函数应原型化为void Foo(int,void*),其中第一参数是跟踪条位置,
//				 第二参数是用户数据(参见下一个参数)。如果回调是NULL指针,则不调用回调,但只更新值
//		userdata 按原样传递给回调的用户数据。它可以用于处理跟踪条事件,而不使用全局变量

函数createTrackbar创建具有指定名称和范围的跟踪条(滑块或范围控件),为与跟踪条同步的位置分配一个变量值,并指定要在跟踪条位置更改时调用的回调函数onChange。创建的跟踪条显示在指定的窗口winname中。

int cv::getTrackbarPos(const String & trackbarname, const String & 	winname )		
//说明:返回跟踪条位置。
//参数:
//		trackbarname 创建的轨迹栏的名称
//		winname 将用作创建的跟踪条父级的窗口的名称
void cv::setTrackbarPos(const String & trackbarname, const String & winname, int pos)			
//说明:设置跟踪条位置。
//参数:
//		trackbarname 创建的轨迹栏的名称
//		winname 将用作创建的跟踪条父级的窗口的名称
//		pos 新位置
void cv::setTrackbarMax	(const String & trackbarname, const String & winname, int maxval)		
//说明:设置滚动条的最大值。
//参数:
//		trackbarname 创建的轨迹栏的名称
//		winname 将用作创建的跟踪条父级的窗口的名称
//		maxval 滚动条的最大值
void cv::setTrackbarMin	(const String & trackbarname, const String & winname, int minval)		
//说明:设置滚动条的最小值。
//参数:
//		trackbarname 创建的轨迹栏的名称
//		winname 将用作创建的跟踪条父级的窗口的名称
//		minval 滚动条的最小值

窗口相关

void cv::destroyAllWindows () //销毁所有窗口
void cv::destroyWindow(const String & winname)	//销毁指定名称的窗口
Rect cv::getWindowImageRect(const String & winname) //返回图像渲染区域的客户端屏幕坐标、宽度和高度	
double cv::getWindowProperty(const String & winname, int prop_id ) //返回窗口的属性
void cv::imshow	(const String & winname, InputArray mat) //在指定窗口中显示图像
void cv::moveWindow(const String & winname, int x, int y) //将窗口移动到指定位置	
void cv::namedWindow(const String & winname, int flags = WINDOW_AUTOSIZE) //创建窗口	
void cv::resizeWindow(const String & winname, int width, int height) //将窗口大小调整为指定大小	
Rect cv::selectROI(const String & windowName, InputArray img, bool showCrosshair = true, bool fromCenter = false) //允许用户在给定图像上选择ROI。 			
void cv::setWindowProperty(const String & winname, int prop_id, double prop_value) //设置窗口属性	
void cv::setWindowTitle(const String & winname, const String & title) //设置窗口名称		
int cv::startWindowThread()	
int cv::waitKey(int delay = 0) //等待按键响应	

鼠标相关

int cv::getMouseWheelDelta(int flags) //获取处理鼠标滚轮事件cv::EVENT_MOUSEWHEEL和cv::VENT_MOUSEHWHEEL时的鼠标滚轮运动增量
//说明:创建跟踪条并将其附加到指定的窗口。
//参数:
//		flags 鼠标回调标志参数。

对于带滚轮的普通鼠标,delta将是120的倍数。值120对应于滚轮的一个凹槽旋转或要采取的动作的阈值,并且每个delta应该发生一个这样的动作。一些具有更高分辨率自由旋转轮子的高精度鼠标可能会产生更小的值。
对于cv::EVENT_MOUSEWEEL,正值和负值分别表示向前和向后滚动。对于cv::EVENT_MOUSEHWHEEL(如果可用),正值和负值分别表示向右和向左滚动

void cv::setMouseCallback(const String & winname, MouseCallback onMouse, void * userdata = 0)			
//说明:设置指定窗口的鼠标处理程序
//参数:
//		winname 将用作创建的跟踪条父级的窗口的名称
//		onMouse 鼠标事件的onMouse回调函数
//		userdata 可选参数

回调函数类型定义

typedef void(* cv::ButtonCallback) (int state, void *userdata) 
//说明:cv::createButton创建的按钮的回调函数
//参数:
//		state 按钮的当前状态。它可以是-1表示按钮,0或1表示复选框/单选按钮
//		userdata 可选参数
typedef void(* cv::MouseCallback) (int event, int x, int y, int flags, void *userdata)
//说明:鼠标事件的回调函数
//参数:
//		event cv::MouseEventTypes常量之一
//		x 鼠标事件的x坐标
//		y 鼠标事件的y坐标
//		flags cv::MouseEventTypes常量之一
//		userdata 可选参数
typedef void(* cv::OpenGlDrawCallback) (void *userdata)
//说明:定义为每帧调用一次的回调函数
//参数:
//		userdata 可选参数

typedef void(* cv::TrackbarCallback) (int pos, void *userdata)
//说明:cv::Trackbar的回调函数
//参数:
//		pos 指定轨迹条的当前位置
//		userdata 可选参数
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AoDeLuo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值