您的位置:首页 > 编程语言 > C语言/C++

如何用opencv (c++)捕捉鼠标点击位置

2014-04-29 10:11 351 查看
这段代码的功能是:显示图片,并捕捉鼠标在图片上的点击位置。

(该功能常用于 标注图片数据,是获取机器学习的样本数据的第一步)

#include <opencv2\opencv.hpp>  

#include<iostream>

using namespace cv;
using namespace std;

//三个全局变量

IplImage *src;

CvPoint points[6];

int pn = 0;

const char * ff;

//捕捉鼠标位置

void on_mouse( int event, int x, int y, int flags, void* ustc)  

{  

    CvFont font;  

    cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5, 0, 1, CV_AA);  

          

    if( event == CV_EVENT_LBUTTONDOWN )  

    {  

        CvPoint pt = cvPoint(x,y);  

        char temp[16]; 

        sprintf(temp,"(%d,%d)",pt.x,pt.y);  

        cvPutText(src,temp, pt, &font, cvScalar(255, 255, 255, 0));  

        cvCircle( src, pt, 2,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );  

        cvShowImage( ff, src );  
points[pn++] = pt;

//再次控制要获取的鼠标点的个数

if (pn >= 6){ 

cvShowImage(ff,src);

cvWaitKey(0);

cvDestroyWindow(ff);
cvReleaseImage(&src);
pn=0;
}

    }   

}  

//主函数,遍历并显示图片,调用函数捕捉捕捉鼠标位置。

int enumerateImages(){
string f =  "D:\\test2\\reg\\0.jpg";
ff = f.c_str();
src = cvLoadImage(ff);
cvShowImage(ff,src);
cvSetMouseCallback( ff, on_mouse, 0 );
cvWaitKey(0);
return -1;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐