opencv-鼠标事件
#include<opencv2/opencv.hpp> #include<iostream> bool down = false; int i = 0; void onMouse(int event, int x, int y, int flags, void* param) //鼠标回调函数 { /* 鼠标事件发生时,自动执行 Event是整数,表示鼠标事件的类型 X和Y为事件发生时鼠标的坐标,用像素坐标表示 flags表示事件发生时按下鼠标的那个键 param是指向任意对象的指针,作为附件的参数发送给函数 */ cv::Mat* im = reinterpret_cast<cv::Mat*>(param); //im事件发生时鼠标所指的图像指针 if (event== cv::EVENT_LBUTTONDOWN) { //如果按下了鼠标左键 std::cerr << "你按下了鼠标左键x=" << x << ", y=" << y << std::endl << std::endl; down = true; } if (event == cv::EVENT_LBUTTONUP) { //如果释放了鼠标左键 std::cerr << "你释放了鼠标左键x=" << x << ", y=" << y << std::endl << std::endl; down = false; } if (event == cv::EVENT_MOUSEMOVE && down==true) { //如果按下左键并移动 std::cerr << "你按下了鼠标左键并移动 x=" << x << ", y=" << y << std::endl << std::endl; } /* cv::EVENT_LBUTTONDOWN=1 左键按下 cv::EVENT_RBUTTONDOWN=2 右键按下 cv::EVENT_MBUTTONDOWN=3 中键按下 cv::EVENT_LBUTTONUP=4 左键放开 cv::EVENT_RBUTTONUP=5 右键放开 cv::EVENT_MBUTTONUP=6 中键放开 cv::EVENT_LBUTTONDBLCLK=7 左键双击 cv::EVENT_RBUTTONDBLCLK=8 右键双击 cv::EVENT_MBUTTONDBLCLK=9 中键双击 cv::EVENT_MOUSEMOVE=0, 鼠标移动 cv::EVENT_MOUSEWHEEL=10, 滚轮滚动 cv::EVENT_MOUSEHWHEEL=11 横向滚轮滚动 */ if (flags == cv::EVENT_FLAG_LBUTTON) { //左键拖拽 std::cerr << "你拖拽了鼠标左键 x=" << x << ", y=" << y << std::endl << std::endl; } if (flags == 8) { std::cerr << "按住CTRL拖拽 i=" << i++ << std::endl << std::endl; } /* cv::EVENT_FLAG_LBUTTON =1, //左键拖拽 cv::EVENT_FLAG_RBUTTON =2, //右键拖拽 cv::EVENT_FLAG_MBUTTON =4, //中键拖拽 cv::EVENT_FLAG_CTRLKEY =8 //按住CTRL cv::EVENT_FLAG_SHIFTKEY =16 //按住Shift cv::EVENT_FLAG_ALTKEY =32 //按住ALT */ } int main(int argc, char** argv) { cv::Mat image = cv::imread("D:/bb/tu/1.jpg"); if (image.empty()) { std::cout << "图像读取失败..." << std::endl; return 0; } cv::namedWindow("Original Image"); cv::imshow("Original Image", image); cv::setMouseCallback("Original Image", onMouse, reinterpret_cast<void*>(&image));//处理鼠标动作 /* 参数1:窗口的名字 参数2:onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针 参数3:userdate:传给回调函数的参数【鼠标所指的图像】 */ cv::waitKey(0); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2020-12-15 photoshop-选择工具