C++ OpenCV之鼠标响应事件

2019-07-24 13:18:45 浏览数 (1)

前言

在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。


视频演示

<br />

最终鼠标画完的显示效果


-END-

0 人点赞