当前位置: 首页 > news >正文

OpenCV高级图形用户界面(15)注册一个回调函数来处理鼠标事件的函数setMouseCallback()的使用

  • 操作系统:ubuntu22.04
  • OpenCV版本:OpenCV4.9
  • IDE:Visual Studio Code
  • 编程语言:C++11

算法描述

为指定的窗口设置鼠标处理器。

setMouseCallback 是 OpenCV 中的一个功能,允许开发者注册一个回调函数来处理鼠标事件。当用户在窗口中移动鼠标或点击时,这个回调函数会被触发。这对于交互式应用非常有用,比如图像标注、特征点选取等。

函数原型


void cv::setMouseCallback	
(const String & 	winname,MouseCallback 	onMouse,void * 	userdata = 0 
)		

参数

  • 参数winname 窗口的名称。
  • 参数onMouse 鼠标事件的回调函数。参见 OpenCV 样例了解如何指定和使用回调。
  • 参数userdata 传递给回调的可选参数。

代码示例


#include <iostream>
#include <opencv2/opencv.hpp>using namespace cv;
using namespace std;// 鼠标回调函数
void onMouse( int event, int x, int y, int flags, void* userData )
{// 用户数据int* data = static_cast< int* >( userData );switch ( event ){case EVENT_LBUTTONDOWN:cout << "Left button of the mouse was clicked - position (" << x << ", " << y << ")" << endl;*data += 1;  // 更新用户数据break;case EVENT_RBUTTONDOWN:cout << "Right button of the mouse was clicked - position (" << x << ", " << y << ")" << endl;*data -= 1;  // 更新用户数据break;default:break;}
}int main()
{Mat img = Mat::zeros( 640, 480, CV_8UC3 );namedWindow( "Test Window", WINDOW_AUTOSIZE );imshow( "Test Window", img );// 初始化用户数据int count = 0;// 设置鼠标回调函数,并传递用户数据setMouseCallback( "Test Window", onMouse, &count );// 等待按键waitKey( 0 );// 输出用户数据的最终值cout << "Final value of count: " << count << endl;return 0;
}

运行结果

鼠标左右键随意点击窗口中的任意位置,终端输出点击的位置坐标
在这里插入图片描述


http://www.mrgr.cn/news/52057.html

相关文章:

  • Cannot determine local hostname
  • KNN的 k 设置的过大会有什么问题
  • ZBrush和3D-Coat各自的优缺点是什么?
  • 番茄工作法计时器:高效时间管理利器
  • 鸿蒙开发案例:绘制中国象棋棋盘与棋子的技术教程
  • Java 枚举类
  • 自定义类型——结构体
  • c#编写的各类应用程序
  • 65.DDR3读写控制器的设计与验证(2)
  • 60. 排列序列
  • Windows11桌面快捷方式图标变为白色方块-如何解决
  • C++11 使用 {} 进行初始化
  • 【微信小程序_18_WXS脚本】
  • TemporalBench:一个专注于细粒度时间理解的多模态视频理解的新基准。
  • 从实习到春招成为一名安全工程师,我经历了什么
  • mqtt与云服务器
  • 2024了,传统行业转行AI,可不可行?
  • Java 虚拟机(JVM)中的内存泄漏排查技巧及各种内存查看命令分析工具推荐
  • C语言中点操作符(.)和箭头操作符(->)的区别
  • 汽车免拆诊断案例 | 2023款零跑C01纯电车后备厢盖无法电动打开和关闭