c++(和opencv)如何把局部变量变成全局变量的功能

今天在开发opencv项目的时候,需求是:视频实时播放,鼠标点击某处,新窗口放大播放局部视频。
这里遇到的问题是:需要用opencv获取鼠标。
背景:opencv有自带的鼠标回调函数,而且它的on_Mouse()函数是封装好的,有五个形参,其中就有鼠标的位置x和y在形参中。
可是 on_Mouse()函数是void型,没有返回值。

问题转化为:我需要用on_Mouse()函数有的鼠标位置,传到另一个函数(要使用的地方)。

解决办法是:定义两个全局变量,在on_Mouse()函数内部传出来。

int X, Y;//鼠标坐标全局变量

下面是opencv自带的配合鼠标函数的函数on_Mouse()。需要的就是两个形参

void on_Mouse(int event, int x, int y, int flag, void*ustc) {
 //形参x,y是鼠标点击的位置
 //需要鼠标的位置
 if (event == CV_EVENT_LBUTTONDOWN)
 {
  cout << "下面进行鼠标位置的获取" << endl;
  cout << "鼠标坐标为:" << x << "和" << y << endl;
  X = x;//把局部变量传出来变成全局变量
  Y = y;
 } 
}

在主函数中使用鼠标回调函数

setMouseCallback("src1", on_Mouse, 0);//调用鼠标回调函数
//这里的窗口名称是src1

记录一下自己踩得坑。怎么把局部变量传出来。或者传出来了,用的时候用错了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值