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

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

算法描述

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

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

函数原型

cpp 复制代码
void cv::setMouseCallback	
(
	const String & 	winname,
	MouseCallback 	onMouse,
	void * 	userdata = 0 
)		

参数

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

代码示例

cpp 复制代码
#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;
}

运行结果

鼠标左右键随意点击窗口中的任意位置,终端输出点击的位置坐标

相关推荐
视界先声9 分钟前
2025年GEO自动化闭环构建实践:监测工具选型与多平台反馈机制工程分享
大数据·人工智能·自动化
陈天伟教授11 分钟前
人工智能训练师认证教程(3)Pandas数据世界的军刀
人工智能·数据分析·pandas
another heaven14 分钟前
【深度学习 YOLO官方模型全解析】
人工智能·深度学习·yolo
HyperAI超神经15 分钟前
【Triton 教程】triton_language.load
人工智能·学习·大语言模型·cpu·gpu·编程语言·triton
科士威传动19 分钟前
丝杆支撑座同轴度如何安装?
人工智能·科技·机器学习·自动化
2401_8414956421 分钟前
【自然语言处理】中文 n-gram 词模型
人工智能·python·算法·自然语言处理·n-gram·中文文本生成模型·kneser-ney平滑
百***243722 分钟前
GPT5.1 vs Claude-Opus-4.5 全维度对比及快速接入实战
大数据·人工智能·gpt
腾讯云开发者34 分钟前
与 AI 共生,腾讯云携手行业专家共话数智驱动新质生长
人工智能
WLJT1231231231 小时前
AI懂你,家更暖:重塑生活温度的智能家电新范式
人工智能·生活
roman_日积跬步-终至千里1 小时前
【计算机视觉(16)】语义理解-训练神经网络1_激活_预处理_初始化_BN
人工智能·神经网络·计算机视觉