当前位置:网站首页>6.【opencv鼠标回调事件】
6.【opencv鼠标回调事件】
2022-08-08 13:06:00 【李在奋斗……】
(一)、什么是鼠标回调事件以及作用?
简单的理解:鼠标回调时间就是我们在编译窗口中,我们的鼠标是可以运转的
并且会返回我们鼠标移动的二维坐标.
(二)、我们需要认识那些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.效果展示:
鼠标回调事件效果
边栏推荐
猜你喜欢

changes not staged for commit 解决办法

Jenkins - 持续集成介绍(1)
![[C language] Detailed explanation of custom types: structure, enumeration, union](/img/5c/69d238a71e24b34c2232c20ed7e09e.png)
[C language] Detailed explanation of custom types: structure, enumeration, union
![[C language] file related operations](/img/bb/95a5acc1c8e780c1ed46c9c8ab0543.png)
[C language] file related operations

SSTI漏洞介绍认识(flask、Werkzeup)

HackTheBox | Previse

干货满满,中科院信工所于静新课帮你get学术研究与论文写作技能

一名合格的程序员是如何优雅地解决线上问题的?

2022-08-05

In-depth analysis of the soul of C language -- pointer
随机推荐
PE文件-手工修改重定位表-WinHex-CFF Explorer
史上最全JVM性能调优:线程+子系统+类加载+内存分配+垃圾回收
[界面开发]DevExpress WinForms流程图控件——XtraDiagrams组件入门指南
干货满满,中科院信工所于静新课帮你get学术研究与论文写作技能
[C language] In-depth analysis of data storage in memory
R语言ggplot2可视化:使用ggpubr包的ggbarplot函数可视化堆叠的柱状图(stacked bar plot)、palette参数自定义不同水平柱状图边框以及填充的颜色
指针和数组笔试题解析
建材业深陷数字化困局,B2B协同系统标准化交易流程,解决企业交易网络化难题
STM32 entry development to make infrared remote control (smart home-universal remote control)
MeterSphere--开源持续测试平台
(6)FlinkSQL将kafka数据写入到mysql方式一
Background, History and Lessons of Transfer Learning
(7)FlinkSQL将kafka数据写入到mysql方式二
难产的“第一股”:中式快餐之困
连锁小酒馆第一股,海伦司能否梦圆大排档?
行业领先的界面开发组件DevExpress 8月发布新版——v22.1.4
优刻得“失速”:营收转降,定向增发股东浮亏超三成
Implement a customized pin code input control
TS+Hooks二次封装antd Modal,实现可拖拽
服务器配置——Linux系统安装Redis