opencv-鼠标事件

opencv-鼠标事件

#include<opencv2/opencv.hpp>
#include<iostream>

void onm ouse(int event, int x, int y, int flags, void* param) //鼠标回调函数
{
    /*
    Event是整数,表示鼠标事件的类型
    X和Y为事件发生时鼠标的坐标,用像素坐标表示
    flags表示事件发生时按下鼠标的那个键
    param是指向任意对象的指针,作为附件的参数发送给函数

    */

    cv::Mat* im = reinterpret_cast<cv::Mat*>(param);
    //im事件发生时鼠标所指的图像指针

    switch (event) {
    case cv::EVENT_LBUTTONDOWN: // 鼠标左键按下
        std::cerr << "你按下了鼠标左键x=" << x << ",     y=" << y << std::endl << std::endl;
        break;
    case cv::EVENT_RBUTTONDOWN: // 鼠标右键按下
        std::cerr << "你按下了鼠标右键:x=" << x << ",     y=" << y << std::endl << std::endl;
        break;
    /*
    cv::EVENT_MBUTTONDOWN          中键按下
    cv::EVENT_LBUTTONUP            左键放开
    cv::EVENT_RBUTTONUP            右键放开
    cv::EVENT_MBUTTONUP            中键放开
    cv::EVENT_LBUTTONDBLCLK        左键双击
    cv::EVENT_RBUTTONDBLCLK        右键双击
    cv::EVENT_MBUTTONDBLCLK        中键双击

    */




    }
}

int main(int argc, char** argv) {

    cv::Mat image= cv::imread("D:/bb/tu/sansui.jpg");
    if (image.empty()) {
        std::cout << "图像读取失败..." << std::endl;
        return 0;
    }

    cv::namedWindow("Original Image");
    cv::imshow("Original Image", image);

    cv::setMouseCallback("Original Image", onm ouse, reinterpret_cast<void*>(&image));//处理鼠标动作
    /*
    参数1:窗口的名字
    参数2:onMouse:鼠标响应函数,回调函数。指定窗口里每次鼠标时间发生的时候,被调用的函数指针
    参数3:userdate:传给回调函数的参数【鼠标所指的图像】

    */
    cv::waitKey(0);
    return 0;
}

 

 

 

 

 

 

opencv-鼠标事件

上一篇:算法第五章上机实践报告


下一篇:CV求职面经 -- 数学基础