美文网首页
opencv鼠标事件简易例程

opencv鼠标事件简易例程

作者: SIENTIST | 来源:发表于2019-09-25 10:00 被阅读0次

环境Ubuntu18.04,OpenCv4
程序功能是点击鼠标在图上画点

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>
#include <vector>

using namespace cv;
using namespace std;

// global variable
Mat g_img_dst;

string g_window_name = "在图上画点";

Mat g_img_src;

int clickCount = 0;


static void onMouse(int event, int x, int y, int, void *) {

    //在opencv3中, EVENT_LBUTTONDOWN需改为CV_EVENT_LBUTTONDOWN
    if (EVENT_LBUTTONDOWN == event) {  //按下鼠标事件

        g_img_dst.copyTo(g_imgMouseMove);

        int thickness = -1;
        int lineType = 8;
        circle(g_img_dst, Point(x, y), 20, Scalar(0, 0, 0), thickness, lineType); //画点
        imshow(g_window_name, g_img_dst); //把修改后的图像显示出来


    }       //在opencv3中, EVENT_LBUTTONUP需改为CV_EVENT_LBUTTONUP
    else if (EVENT_LBUTTONUP == event /* && g_startPoint != Point(x, y)*/) { //抬起鼠标事件

        clickCount++;

    }
}

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

    g_img_src=imread("/home/wgh/1.jpg");
    if(!g_img_src.data){
        cout<<" 图片读取失败 "<<endl;
        return 0;
    }

    g_img_src.copyTo(g_img_dst);

    while (true) {
        imshow(g_window_name, g_img_dst);
        setMouseCallback(g_window_name, onMouse, 0);  //开启鼠标事件


        waitKey(5);
    }

    return 0;
}

相关文章

网友评论

      本文标题:opencv鼠标事件简易例程

      本文链接:https://www.haomeiwen.com/subject/egdbuctx.html