C++ OpenCV之鼠标响应事件

前言

在OpenCV中也存在鼠标的操作,今天我们先介绍一下鼠标中的操作事件,用于为之后的GrabCut分割来做个前提。


API

void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0)

参数说明:
    winname:窗口的名字
    onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针。 这个函数的原型应该为void on_Mouse(int event, int x, int y, int flags, void* param);
    userdate:传给回调函数的参数


代码实现

我们再新建一个项目名为opencv--Grabcut,按照配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.

在上图中我们直接把鼠标的回调事件已经写出来了,这个不是重点,重点是我们的鼠标事件。

接下来我们就开始鼠标事件的重点:

定义基本的参数及方法

上图中我们定义的显示的标题为src,这个就不多讲了,然后定义了两个Mat,一个矩形rect。最下面还有个的showimage()的方法,这个方法就是怎么显示图像的。

最重要的方法是onMouse(int event, int x,int y ,int flags, void* param),这个方法用于处理鼠标的操作。

鼠标的操作逻辑

鼠标分别写好了左键按下时,左键按住不动并移动鼠标时和左键松开时的三个事件。

图像显示方法

我们把源图像src复制到result后,然后用红线在result上绘制我们选项的矩形,然后显示出result。


视频演示

最终鼠标画完的显示效果


-END-

长按下方二维码关注微卡智享

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Vaccae

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

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

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

打赏作者

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

抵扣说明:

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

余额充值