opencv鼠标操作setMouseCallback()与on_MouseHandle()

首先介绍调用鼠标操作的函数
setMouseCallback
参数:

  • 目标图像所在的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;

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值