首先介绍调用鼠标操作的函数
参数:
- 目标图像所在的imageWindow名字,仅当鼠标在这个窗口进行操作时,该函数才会起作用。
- 对鼠标操作进行反应的回掉函数。
- 传递给回调函数的数据(为空指针类型)。
例如:setMouseCallback(WINDOW_NAME, on_MouseHandle, (void*)&scrImage);
意思是当鼠标在WINDOW_NAME上进行操作
时,触发函数,将scrImage的地址传递给on_MouseHandle函数。
接下来介绍回调函数。
参数: - EVEN并不是一个简单的我们自定义的int形式的变量名,而是CV_EVENT_*变量之一,一般为setMouseCallBack传过来固定数据,常用的几个数据为:EVENT_MOUSEMOVE(鼠标移动)
EVENT_LBUTTONDOWN (左键按下)
EVENT_RBUTTONDOWN (右键按下)
EVENT_LBUTTONUP (左键弹起)
EVENT_RUTTONUP (右键弹起) - x为鼠标当前所在位置的x坐标。
- y为鼠标当前所在位子的y坐标
- flags为标志位
用来接收setMouseCallback传递过来的用户数据,为空指针类型。
例如:`void on_MouseHandle(int event, int x, int y, int flags, void* param){
Mat& image = (cv::Mat)param;//强行转为mat指针,然后读取其中的内容(因为传递过来的参数为空指针类型,不能直接使用)
switch (event){//event根据鼠标不同的操作传递不同的值过来。然后根据这些值进行不同的操作
case EVENT_MOUSEMOVE://如果鼠标动了
{………….}break;
case EVENT_MOUSEMOVE:
{………….}break;case EVENT_LBUTTONDOWN :
{………….}break;case EVENT_RBUTTONDOWN :
{………….}break;case EVENT_LBUTTONUP :
{………….}break;case EVENT_RUTTONUP :
{………….}break;