open cv鼠标操作(回调函数)

本文介绍了如何在OpenCV中使用`SetMouseCallback`函数设置鼠标回调,详细解析了回调函数的参数及鼠标事件类型,包括鼠标滑动、点击和拖拽等,并提到了按键状态标志位的检测。
摘要由CSDN通过智能技术生成

鼠标消息回调函数 SetMouseCallback

函数原型 c++: void setMousecallback(const string& winname, MouseCallback onMouse, void* userdata=0)
winname:窗口的名字
onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针

这个函数的原型应该为void on_Mouse(int event, int x, int y, int flags, void* param);

userdate:传给回调函数的参数


鼠标响应函数的参数
void on_Mouse( int event, int x, int y, int flags, void* param );

event是 CV_EVENT_*变量之一
EVENT_MOUSEMOVE 滑动
EVENT_LBUTTONDOWN 左击
EVENT_RBUTTONDOWN 右击
EVENT_MBUTTONDOWN 中键点击
EVENT_LBUTTONUP 左键放开
EVENT_RBUTTONUP 右键放开
EVENT_MBUTTONUP 中键放开
EVENT_LBUTTONDBLCLK 左键双击
EVENT_RBUTTONDBLCLK 右键双击
EVENT_MBUTTONDBLCLK 中键双击

x和y是鼠标指针在图像坐标系的坐标(不是窗口坐标系)

flags是CV_EVENT_FLAG的组合

flag的状态有:
EVENT_FLAG_LBUTTON 左键拖拽
EVENT_FLAG_RBUTTON 右键拖拽
EVENT_FLAG_MBUTTON 中键拖拽
EVENT_FLAG_CTRLKEY 按住Ctrl不放
EVENT_FLAG_SHIFTKEY 按住Shift不放
EVENT_FLAG_ALTKEY 按住Alt不放

param是用户定义的传递到setMouseCallback函数调用的参数

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui_c.h>
#include <iostream>
#include <math.h>

using namespace cv;
using namespace std;
Mat src, dst;
Mat tempsrc;

void Mouse(int event, int x, int y, int flags, void* param);//鼠标操作函数


void DrawRectangle(Mat& src, Rect box);//绘制矩形函数


bool draw = false;//决定是否进行绘制的布尔旗帜draw

Rect Rectangle;//定义矩形数据类型Rectangle

RNG rng(12345);
int main()
{
   

	src = imread("D:/实验台/机器视觉/测试图片/格子衬衫.jpg");
	if (src.
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值