美文网首页
Opencv:用鼠标点即获取相应位置坐标

Opencv:用鼠标点即获取相应位置坐标

作者: 就叫我宋叔叔吧 | 来源:发表于2019-01-05 19:00 被阅读51次

    之前做三角剖分,需要提前获取点集,就写了一个鼠标点击图片来获取图片上相应位置坐标信息的小程序,可以用在预操作中。
    程序使用方法:需要提前在当前工程文件夹内新建一个txt文件,用来存储点的坐标。鼠标点击图片,对应点被红色点标注,相应位置坐标信息就会存储到提前新建的txt文件中。

    代码放出:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    #include <fstream>
    using namespace cv;
    using namespace std;
    
    //点击鼠标返回相应坐标位置并存到txtpoints2文件中
    #define WINDOW "source image"
    Mat src;
    void On_mouse(int event, int x, int y, int flags, void*);
    Point recent_Point;
    ofstream file("point2.txt", ios::out | ios::binary);
    int main()
    {
        src = imread("abm.jpg");
        namedWindow(WINDOW, WINDOW_NORMAL);
        setMouseCallback(WINDOW, On_mouse);
        //while (1)
        imshow(WINDOW, src);//点击的开始
        waitKey(0);
        file.close();
        return 0;
    
    }
    void On_mouse(int event, int x, int y, int flags, void*)//每次点击左键,将将当前点坐标存储到txt文件中,并在相应位置画红点
    {
        
        if (event == EVENT_LBUTTONDOWN) 
        {
            recent_Point = Point(x, y);
            file << recent_Point.x << " " << recent_Point.y<<" ";
            circle(src, recent_Point, 3, Scalar(0, 0, 255), -1);    
            imshow(WINDOW, src);
            
        }
    }
    

    结果展示:
    通过鼠标点击来获取奥巴马的脸部坐标:

    image.png
    相应坐标存到txt文件中,分别是"第一个点的横坐标,第一个点的纵坐标;第二个点的横坐标,第二个点的纵坐标;第三个点的横坐标,第三个点的纵坐标。。。。第n个点的横坐标,第n个点的纵坐标"如下图:
    image.png

    相关文章

      网友评论

          本文标题:Opencv:用鼠标点即获取相应位置坐标

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