首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使用cv::setMouseCallback函数

cv::setMouseCallback函数是OpenCV库中的一个函数,用于设置鼠标事件的回调函数。它的原型如下:

代码语言:cpp
复制
void setMouseCallback(const String& winname, MouseCallback onMouse, void* userdata = 0);

该函数有三个参数:

  1. winname:窗口名称,指定要设置鼠标事件的窗口。
  2. onMouse:鼠标事件的回调函数,当鼠标事件发生时,该函数将被调用。
  3. userdata:用户数据指针,可选参数,可以传递给回调函数。

鼠标事件包括鼠标移动、按下和释放等操作。通过设置回调函数,我们可以在特定的鼠标事件发生时执行自定义的操作。

以下是一些常见的鼠标事件类型:

  • EVENT_MOUSEMOVE:鼠标移动事件。
  • EVENT_LBUTTONDOWN:鼠标左键按下事件。
  • EVENT_RBUTTONDOWN:鼠标右键按下事件。
  • EVENT_MBUTTONDOWN:鼠标中键按下事件。
  • EVENT_LBUTTONUP:鼠标左键释放事件。
  • EVENT_RBUTTONUP:鼠标右键释放事件。
  • EVENT_MBUTTONUP:鼠标中键释放事件。

以下是一个示例代码,演示如何使用cv::setMouseCallback函数来处理鼠标事件:

代码语言:cpp
复制
#include <opencv2/opencv.hpp>

using namespace cv;

void onMouse(int event, int x, int y, int flags, void* userdata)
{
    if (event == EVENT_LBUTTONDOWN)
    {
        // 鼠标左键按下事件处理
        // 在控制台输出鼠标点击的坐标
        std::cout << "Left button clicked at (" << x << ", " << y << ")" << std::endl;
    }
    else if (event == EVENT_RBUTTONDOWN)
    {
        // 鼠标右键按下事件处理
        // 在图像上绘制一个红色的圆圈
        Mat* image = static_cast<Mat*>(userdata);
        circle(*image, Point(x, y), 10, Scalar(0, 0, 255), 2);
        imshow("Image", *image);
    }
}

int main()
{
    Mat image = imread("image.jpg");

    namedWindow("Image");
    setMouseCallback("Image", onMouse, &image);

    imshow("Image", image);
    waitKey(0);

    return 0;
}

在上述示例中,我们创建了一个窗口并加载一张图像。然后,我们使用setMouseCallback函数将onMouse函数设置为鼠标事件的回调函数。在onMouse函数中,我们根据不同的鼠标事件类型执行相应的操作。例如,当鼠标左键按下时,我们在控制台输出鼠标点击的坐标;当鼠标右键按下时,我们在图像上绘制一个红色的圆圈。

这是一个简单的示例,你可以根据实际需求在回调函数中执行更复杂的操作。

推荐的腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

OpenCV-Python学习(15)—— OpenCV 鼠标操作和响应(cv.setMouseCallback)

学习目标 学习如何在OpenCV中处理鼠标事件; 学习鼠标事件与回调; 学习鼠标事件回调函数的基本流程。 2. Callback 基本流程 3....鼠标事件 cv.setMouseCallback 函数说明 3.1 cv.setMouseCallback() 函数使用 cv.setMouseCallback(winname,onMouse,userdata...如果使用的第三个参数value是全局变量,完全可以不去管这个userdata参数。传给回调函数的参数!!!...userdata 表示用户定义的传递到setMouseCallback函数调用的参数。 3.5 event 参数说明 值 说明 EVENT_MOUSEMOVE (0) 表示滑动事件。...('mouse_img') # 监听这个窗口的鼠标事件 cv.setMouseCallback('mouse_img', draw_rectangle, img) # 每10毫秒显示一次图片

1.4K20

十八、用鼠标进行画画

一、学习目标 了解如何在图片中加入文字 了解如何使用鼠标进行图像绘制 二、了解如何通过鼠标进行图像绘制 2.1 了解putText方法的使用 putText方法接收图像,文字内容, 坐标 ,字体,大小,...2.2 了解setMouseCallback方法的使用 其实setMouseCallback方法就是一个鼠标的回调函数,这个函数涉及到事件这个概念。...setMouseCallback方法就是一个鼠标的事件回调函数。在我们在图片上进行双击时,我们若想在双击点进行绘制一个圆形,这个时候就需要这个setMouseCallback方法。...setMouseCallback方法接收两个参数,一个是要显示的窗口名称,还有一个是响应的处理函数。...: cv2.circle(img,(x,y),10,(255,0,0),1) 以上函数draw_circle中参数event会直接被setMouseCallback函数进行值的传递x,y

1.2K20
  • 番外篇: 鼠标绘图

    学习如何用鼠标实时绘图。图片等可到文末引用处下载。...目标 捕获鼠标事件 OpenCV函数cv2.setMouseCallback() 教程 知道鼠标在哪儿 OpenCV中,我们需要创建一个鼠标的回调函数来获取鼠标当前的位置、当前的事件如左键按下/左键释放或是右键单击等等...使用cv2.setMouseCallback()来创建鼠标的回调函数,比如我们在左键单击的时候,打印出当前鼠标的位置: import cv2 import numpy as np # 鼠标的回调函数...cv2.setMouseCallback('image', mouse_event) while(True): cv2.imshow('image', img) # 按下ESC键退出...效果应该如下图所示: 小结 要用鼠标绘图,需要用cv2.setMouseCallback()定义回调函数,然后在回调函数中根据不同的event事件,执行不同的功能。

    72220

    十九、简易绘画板制作

    一、学习目标 了解事件 编写一个简易绘画板 二、了解如何制作简易绘画板 2.1 了解鼠标多种事件 上一节我们简单的使用opencv的图形绘制方法,用鼠标绘制了一些内容。...函数回调后将会传到所执行的函数中,并且以event参数进行对应,取值通过event参数进行取值。...('image') cv2.setMouseCallback('image',listening) while(1): cv2.imshow('image',img) if cv2.waitKey...and flags==cv2.EVENT_FLAG_LBUTTON: 这个时候在该判断中,使用if语句判断是否已经按下左键后开启了绘制,防止bug的出现,若已经开启了绘制则进行绘制矩形: cv2.rectangle...) cv2.namedWindow('image') cv2.setMouseCallback('image',draw) while(1): cv2.imshow('image',img)

    1.3K10

    OpenCV 系列教程1 | OpenCV 的 GUI 特性

    建议阅读时长 10 分钟 图像入门 学习目标: 图像的读取、显示、保存 学习三个函数cv2.imread(), cv2.imshow() , cv2.imwrite() 使用 Matplotlib...使用 matplotlib 显示图像 Matplotlib是一个用于Python的绘图库,它提供了多种绘图方法。在这里,将学习如何使用 Matplotlib 显示图像。...视频入门 学习目标: 显示视频、保存视频 从相机进行捕获 cv2.VideoCapture(), cv2.VideoWriter() 函数使用 从相机捕获视频 笔记本自带摄像头 # 创建一个 VideoCapture...鼠标作为画笔 学习目标: 处理鼠标事件 cv2.setMouseCallback() 简单 Demo 首先,创建一个鼠标回调函数,该函数在鼠标事件发生时执行。...= np.zeros((512, 512, 3), np.uint8) cv2.namedWindow("image") # 创建鼠标回调函数,绑定功能函数 cv2.setMouseCallback(

    3.5K21

    如何使用SUMIFS函数

    标签:Excel函数,SUMIFS函数 如下图1所示,要求数据表中指定颜色和尺寸的价格之和。数据表区域为B3:D8,条件区域在列B和列C。...图1 使用SUMIFS函数很容易求得,在单元格D11中的公式为: =SUMIFS(D3:D8,B3:B8,B11,C3:C8,C11) 单元格D12中的公式为: =SUMIFS(D3:D8,B3:B8,...B12,C3:C8,C12) SUMIFS函数的语法 SUMIFS函数语法: SUMIFS(sum_range,criteria_range1,criteria1,[criteria_range2],[...示例5:使用逻辑运算符 单元格D11中的公式求编号小于104且尺寸为“小”的价格之和: =SUMIFS(D3:D8,B3:B8,B11,C3:C8,C11) 单元格D12中的公式求编号大于等于103且尺寸为...“中”的价格之和: =SUMIFS(D3:D8,B3:B8,B11,C3:C8,C11) 图6 可以使用的逻辑运算符有: 1.

    2.1K20

    计算机视觉:1.1~2.5 初等概念及OpenCV的使用

    1.1~2.5 初等概念及OpenCV的使用 1.1 机器视觉介绍 现在说的机器视觉(Machine Vision)一般指计算机视觉(Computer Vision),简单来说就是研究如何使机器看懂东西...为了正常显示猫的图片,要使用OpenCV的图像显示方法: cv2.imshow('doge', doge) cv2.waitKey(0) cv2.destroyAllWindows() 可以将其其为一个函数来显示图片...# 释放资源 cap.release() vw.release() cv2.destroyAllWindows() 2.4 控制鼠标 OpenCV允许我们对窗口上的鼠标动作做出响应 setMouseCallback...cv2.WINDOW_NORMAL) # 宽度(列数)和高度(行数) cv2.resizeWindow('mouse', 640, 360) # 绑定鼠标的回调函数 cv2.setMouseCallback...cv2.namedWindow('trackbar', cv2.WINDOW_NORMAL) cv2.resizeWindow('trackbar', 640, 480) # 定义回调函数 def

    1.3K21

    Python-OpenCV,基于标准文档的实例(一)

    在 播放每一帧时,使用cv2.waiKey() 设置适当的持续时间。如果设置的太低视频就会播放的非常快,如果设置的太高就会播放的很慢(你可以使用这种方法控制视频的播放速度)。...对于图片来时很简单只需要使用cv2.imwrite()。...OpenCV 中的绘图函数 cv2.line() cv2.circle() cv2.rectangle() cv2.ellipse() cv2.putText() 画线:要画一条线,你只需要告诉函数这条线的起点和终点...),5) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() 画矩形:要画一个矩形,你需要告诉函数的左上角顶点和右下角顶点的坐标...:cv2.setMouseCallback() 双击画圆 import numpy as np import cv2 def draw_circle(event,x,y,flags,param):

    73240
    领券