#include <opencv2\opencv.hpp>

using namespace cv;

struct mouse_para
{
cv::Mat org;
cv::Mat img; std::string winName = ""; // todo: you can add your own members here.
}; void on_mouse(int event, int x, int y, int flags, void *_ustc) // event鼠标事件代号,x,y鼠标坐标,flags拖拽和键盘操作的代号
{
mouse_para *ustc = static_cast<mouse_para*>(_ustc); static Point pre_pt = (-1, -1);//初始坐标
static Point cur_pt = (-1, -1);//实时坐标 char temp[16];
if (event == CV_EVENT_LBUTTONDOWN)
{
std::cout << "Left buttom down !" << std::endl;
// todo: you can add your own code here.
}
else if (event == CV_EVENT_MOUSEMOVE && !(flags & CV_EVENT_FLAG_LBUTTON))//左键没有按下的情况下鼠标移动的处理函数
{
std::cout << "(" << x << ", " << y << ")" << std::endl;
// todo: you can add your own code here.
}
else if (event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON))//左键按下时,鼠标移动
{
std::cout << "Left buttom down and mouse move!" << std::endl;
// todo: you can add your own code here.
}
else if (event == CV_EVENT_LBUTTONUP)//左键松开
{
std::cout << "Left buttom up!" << std::endl;
// todo: you can add your own code here.
} //ustc->org.copyTo(ustc->img);
//imshow("img", ustc->img); } int main()
{
mouse_para mp;
mp.org = cv::Mat::ones(500, 500, CV_8UC1);
mp.org.copyTo(mp.img);
mp.winName = "img"; namedWindow(mp.winName);//定义一个img窗口
setMouseCallback(mp.winName, on_mouse, &mp);//调用回调函数 for (int i=0; i<255;++i)
{
i = i % 250;
mp.org = i*cv::Mat::ones(500,500, CV_8UC1);
mp.org.copyTo(mp.img); imshow(mp.winName, mp.img);
cv::waitKey(10);
} return 0;
}

  

opencv鼠标事件的更多相关文章

  1. 学习OpenCV——鼠标事件(画框)

    #include "cv.h" #include "highgui.h" bool check_line_state=false; IplImage* work ...

  2. Opencv函数setMouseCallback鼠标事件响应

    用户通过鼠标对图像视窗最常见的操作有: 1. 左键单击按下 2. 左键单击抬起 3. 左键按下拖动 4. 鼠标指针位置移动 单次单击操作响应事件及顺序 Opencv中setMouseCallback( ...

  3. opencv入门系列教学(四)处理鼠标事件

    一.鼠标事件的简单演示 opencv中的鼠标事件,值得是任何与鼠标相关的任何事物,例如左键按下,左键按下,左键双击等.我们先来看看鼠标事件有哪些,在python中执行下面代码: import cv2 ...

  4. Opencv step by step - 鼠标事件

    鼠标事件有下面几种(没有滚轮事件,比较遗憾): #define CV_EVENT_MOUSEMOVE 0 滑动 #define CV_EVENT_LBUTTONDOWN 1 左键点击 #define ...

  5. Opencv下图像对鼠标事件的响应

    直接上代码: //////////////////////////////////////////////////////////////////////// // // 该程序从文件中读入一幅图像, ...

  6. Opencv处理鼠标事件-OpenCV步步精深

    在图片上双击过的位置绘制一个 圆圈 鼠标事件就是和鼠标有关的,比如左键按下,左键松开,右键按下,右键松开,双击右键等等. 我们可以通过鼠标事件获得与鼠标对应的图片上的坐标.我们通过以下函数来调用查看所 ...

  7. OpenCV3添加滑动条和鼠标事件到图形界面

    鼠标事件和滑动条控制在计算机视觉和OpenCV中非常有用,使用这些控件,用户可以直接与图形界面交互,改变输入图像或者变量的属性值. /* In this section, we are going t ...

  8. python_Opencv_处理鼠标事件

    流程: 首先,创建一个鼠标事件回调函数,当鼠标事件发生时就会被执行. 鼠标事件可以是鼠标上的任何动作,比如左键按下,左键松开,左键双击等. 我们可以通过鼠标事件获得与鼠标对应的图片上的坐标. 根据这些 ...

  9. opencv鼠标操作及GUI矩形绘画

    OpenCV的鼠标操作是通过一个中介函数配合回调函数来实现的.指定鼠标操作消息回调函数的函数为SetMouseCallback. void setMouseCallback(const string& ...

随机推荐

  1. Vue的模板语法(四)

    一.插值 1. 文本 数据绑定最常见的形式就是使用“Mustache”语法 (双大括号) 的文本插值: <span>Message: {{ msg }}</span> Must ...

  2. ubuntu中安装rabbitmq服务并成功启动

    在我们使用rabbitmq时,首先要对其进行安装,而后才能对其进行使用 安装 Erlang 由于 RabbitMQ 是采用 Erlang 编写的,所以需要安装 Erlang 语言库.就像 java 需 ...

  3. ImportError: cannot import name 'render_to_response' 解决方法

    前几天 Django 官方推出了 3.0 框架,项目在 K8S 内部署启动的时候,报了这个错:ImportError: cannot import name 'render_to_response' ...

  4. 怎么做web接口测试

        这就需要开发提供的接口文档了,接口文档和功能测试的需求说明书的功能是一样的.包括:接口说明.调用的url,请求方式(get or post),请求参数.参数类型.请求参数说明,返回结果说明.有 ...

  5. ASCll编码,

  6. 奥展项目笔记05--域名、端口、Nginx相关知识笔记

    1.我国的电信运营商是默认封闭80端口的. 中国电信屏蔽ADSL用户80端口 只是做应用服务器的话你可以使用别的端口. 80端口电脑上同时有各种各样的程序在运行,他们都需要借助网络来进行通信.例如,你 ...

  7. Linux RAID 磁盘管理

    Linux RAID 磁盘管理 RAID工作模式介绍:https://www.cnblogs.com/xiangsikai/p/8441440.html 本章主要讲解 Linux下 RAID5 与 R ...

  8. Python 电子邮件

    从一台计算机编写邮件到对方收到邮件.假设我们自己的电子邮件地址是me@163.com,对方的电子邮件地址是friend@sina.com 我们在本地的软件上写好邮件,点击发送,邮件就发送出去了,这些电 ...

  9. 小鸟初学Shell编程(五)输入输出重定向

    重定向作用 一个进程默认会打开标准输入.标准输出.错误输出三个文件描述符. 重定向可以让我们的程序的标准输出.错误输出的信息重定向文件里,那么这里还可以将文件的内容代替键盘作为一种标准输入的方式. 重 ...

  10. MVC中IActionFilter过滤器俄罗斯套娃的实现方式

    看mvc的源码我们知道,它是在 ControllerActionInvoker 类中执行 InvokeAction 方法来实现过滤器和action方法执行的. 通过查看源码我们知道,他是通过调用 In ...