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.效果展示:

鼠标回调事件效果

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉士先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值