cvSetMouseCallback()鼠标坐标、事件返回

来源:互联网 发布:文档拍照识别软件 编辑:程序博客网 时间:2024/04/30 04:20
CVAPI(void) cvSetMouseCallback( const char* window_name, CvMouseCallback on_mouse,

                                void* param CV_DEFAULT(NULL));


再要自己定义一个on_mouse()函数,把鼠标的事件、坐标、标志位、图像指针返回到on_mouse()函数中。


void on_mouse(int event, int x, int y, int flags, void* param);


#include <highgui.h>using namespace std;void on_mouse(int event, int x, int y, int flags, void* param);CvFont font;char str[10]={"(000,000)"};int main(){IplImage *img = cvCreateImage( cvSize(600,600),IPL_DEPTH_8U,3 );for(int y=0;y<img->height;y++){uchar *ptr=(uchar*)( img->imageData + y*img->widthStep );for(int x=0;x<img->width;x++)ptr[3*x]=ptr[3*x+1]=ptr[3*x+2]=255;}cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);cvShowImage("Example1",img);cvSetMouseCallback("Example1",on_mouse,img);cvWaitKey(0);cvDestroyWindow("Example1");cvReleaseImage( &img );return 0; }void on_mouse(int event, int x, int y, int flags, void* param){str[1]=(x/100)%10+48;;str[2]=(x/10)%10+48;str[3]=x%10+48;str[5]=(y/100)%10+48;;str[6]=(y/10)%10+48;str[7]=y%10+48; for(int x=0;x<35;x++)for(int y=0;y<120;y++)cvSet2D(param,x,y,cvScalar(255,255,255));cvInitFont(&font,CV_FONT_HERSHEY_COMPLEX,0.5,1,1,2,8);cvPutText(param,str,cvPoint(0,24),&font,cvScalar(255,250,0));cvShowImage("Example1",param);}

运行结果:






鼠标在窗口中移动,左上角的坐标值会变化

0 0
原创粉丝点击