【OpenCV 鼠标响应 】

本文详细介绍了如何在OpenCV中设置窗口的鼠标响应,包括鼠标事件的不同标志(如LEFTBUTTONDOWN、MOUSEMOVE和LEFTBUTTONUP),以及如何编写回调函数来处理这些事件,如跟踪鼠标移动和绘制选区。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OpenCV 鼠标响应

开发环境如下:
VS2022 + OpenCV 4.6.1

鼠标响应函数原型

)

  • winname :添加鼠标响应窗口的名字
  • onMouse :鼠标响应的回调函数
  • userdata :传递给回调函数的可选参数

在这里插入图片描述

  • event:鼠标响应事件标志,参数类型为 EVENT_* 形式
  • x,y :鼠标在图像坐标系中的x,y坐标
  • flags:鼠标响应标志
  • userdata: 传递给回调函数的可选参数

setMouseCallback 函数为指定的窗口创建鼠标响应,就是只有在设置的窗口上进行操作,函数才会正常响应。MouseCallback函数的函数名可以任意设置,并且该函数只有在鼠标状态发生变化的时候才会调用。

EVENT 事件

在这里插入图片描述
在这里插入图片描述

  cv::EVENT_FLAG_LBUTTON = 1,按住左键拖拽
  cv::EVENT_FLAG_RBUTTON = 2,按住右键拖拽
  cv::EVENT_FLAG_MBUTTON = 4,按住中键拖拽
  cv::EVENT_FLAG_CTRLKEY = 8,按住“CTRL”
  cv::EVENT_FLAG_SHIFTKEY = 16,按住“SHIFT”
  cv::EVENT_FLAG_ALTKEY = 32,按住“ALT”

  cv::EVENT_MOUSEMOVE = 0,鼠标在窗口上移动
  cv::EVENT_LBUTTONDOWN = 1,按下鼠标i左键
  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_MBUTTONDBLCLK = 9,双击鼠标中键
  cv::EVENT_MOUSEWHEEL = 10,正值表示向前滚动,负值表示向后滚动
  cv::EVENT_MOUSEHWHEEL = 11,正值表示向左滚动,负值表示向右滚动

实际的说就是,鼠标响应就是当鼠标位于对应的图像窗口时,时刻检测鼠标状态,当鼠标状态发生改变时,调用回调函数,并且根据回调函数中的判断逻辑选择执行相应的操作。

示例测试代码

#include <opencv2\opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

//全局变量
Mat img, img_point, img_point_Roi;//图片
Point prePoint, lastPoint;//起始点 终止点
Rect img_Roi;//感兴趣区
String img_file_name = "D:/img_file/00.jpg";//图片文件路径

//函数声明
void mouse
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

PersiaF

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

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

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

打赏作者

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

抵扣说明:

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

余额充值