16.【opencv鼠标回调事件】

简介: 16.【opencv鼠标回调事件】

(一)、什么是鼠标回调事件以及作用?

简单的理解:鼠标回调时间就是我们在编译窗口中,我们的鼠标是可以运转的

并且会返回我们鼠标移动的二维坐标.

(二)、我们需要认识那些API?

1.回调函数:

声明在类外的函数、其基本格式为:

void mouse_callback(int event, int x, int y, int flag, void* userdata)         //回调函数
{
  cout << event << " " << x << " " << y << " " << flag << " "<< endl;          //打印函数.
}

构造函数参数格式为:

event:(本文按照基础走。也即数字)鼠标事件

0=滑动;

1=左键点击;2=右键点击;3=中建点击;
4=左键放开;5=右键放开;6=右键放开;
7=左键双击;8=右键双击;9=中建双击;

x和y:鼠标指针在图像坐标系的坐标

flags鼠标的组合键显示:

usderata: 用户自定义参数:

2.设置鼠标回调函数:

其名称为固定的名称:SetMouseCallback(窗口名字,回调函数名字,usdedata)

主要目的:是响应窗口.

setMouseCallback("鼠标事件", mouse_callback);          //设置鼠标回调函数

(三)操作思想与基本思路:

首先我们要设置回到函数mousecallback;然后进行窗口打印输出鼠标的各项操作.然后在主函数中读入图像,设置窗口,进行设置鼠标回调函数,显示帧数、最后销毁窗口.

(四)、实战项目:

1.代码展示:
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
void mouse_callback(int event, int x, int y, int flag, void* userdata)         //回调函数
{
  cout << event << " " << x << " " << y << " " << flag << " "<< endl;          //打印函数.
}
int main()
{
  Mat imag;
  imag = imread("xx.jpg");                                //读入图像
  namedWindow("鼠标事件",WINDOW_NORMAL);
  setMouseCallback("鼠标事件", mouse_callback);          //设置鼠标回调函数
  while (1)
  {
    imshow("鼠标事件", imag);                         //展示窗口
    if (waitKey(25) == 27)break;                      //展示帧率
  }
  cout << "程序退出:" << endl;
  destroyAllWindows();
  return 0;
}
2.效果展示:

鼠标回调事件效果


相关文章
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
存储 Cloud Native Linux
OpenCV鼠标操作(画红色方框截取图像)
OpenCV鼠标操作(画红色方框截取图像)
|
计算机视觉
Qt+opencv4区域鼠标截图+图像比对(视频采集)
Qt+opencv4区域鼠标截图+图像比对(视频采集)
|
API C++ 计算机视觉
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++
|
计算机视觉
OpenCV鼠标画图例程,鼠标绘制矩形
    鼠标画矩形:     // An example program in which the // user can draw boxes on the screen. // /* License: Oct.
1156 0
|
计算机视觉 C++ 监控
opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
  前言        好长时间没写博文了,今天偷偷懒写篇关于opencv2中鼠标响应操作的文章。       鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝不可,鼠标操作之前已经接触很多了,在MFC,QT,OpenGL,等等中,理论主要就是两点,一是监控鼠标操作,鼠标点击,移动,松开,然后通过mouse_event识别判断出那一种鼠标的操作,根据不同的操作然后进行处理,二是在主函数中加入鼠标的回调函数,将鼠标操作与程序的窗口绑定。
1225 0
|
计算机视觉
在OpenCV中利用鼠标绘制矩形和截取图像的矩形区域
这是两个相关的程序,前者是后者的基础。实际上前一个程序也是在前面博文的基础上做的修改,请参考《在OpenCV中利用鼠标绘制直线》 。下面贴出代码。 程序之一,在OpenCV中利用鼠标绘制矩形 [c-sharp] view plaincopy #include    #include    #include    #pragma comment( lib, "cv.
1158 0
|
计算机视觉
opencv中用鼠标画矩形
对cvSetMouseCallback设置鼠标回调函数,cvRect画出矩形,以下为学习opencv的代码示例: #include #include  // Define our callback which we will install for// mouse events.
761 0
|
计算机视觉
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
这篇文章详细介绍了OpenCV库中的图像二值化函数`cv2.threshold`,包括二值化的概念、常见的阈值类型、函数的参数说明以及通过代码实例展示了如何应用该函数进行图像二值化处理,并展示了运行结果。
3773 0
Opencv学习笔记(三):图像二值化函数cv2.threshold函数详解
|
算法 计算机视觉
opencv图像形态学
图像形态学是一种基于数学形态学的图像处理技术,它主要用于分析和修改图像的形状和结构。
264 4