只能在图片上选取2个点的功能实现

来源:互联网 发布:编程基础入门 编辑:程序博客网 时间:2024/06/05 08:03
主程序部分
IplImage* pFrame1 =NULL;IplImage* show_img1=NULL;IplImage* one_pt_img1=NULL;//全局变量
show_img1=cvCloneImage(pFrame1);one_pt_img1=cvCloneImage(pFrame1);cvSetMouseCallback( "img1", on_mouse, 0 );
void on_mouse( int event, int x, int y, int flags, void* ustc){CvPoint choose_pt= {-1,-1};CvPoint response_pt= {-1,-1};CvFont font;cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5, 0, 1, CV_AA);char pt_text[16];sprintf(pt_text,"(%d,%d)",x,y);choose_pt= cvPoint(x,y);IplImage* temp1=cvCloneImage(show_img1);if(event == CV_EVENT_MOUSEMOVE)cvPutText(temp1,pt_text,choose_pt, &font, cvScalar(0,0, 0, 255));else if( event == CV_EVENT_LBUTTONDOWN ){cvZero(temp1);cvCopyImage(one_pt_img1,temp1);cvPutText(temp1,pt_text,choose_pt, &font, cvScalar(0,0, 0, 255));cvCircle(temp1,choose_pt,2,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );cvZero(show_img1);cvCopyImage(temp1,show_img1);cvZero(one_pt_img1);cvCopyImage(pFrame1,one_pt_img1);cvPutText(one_pt_img1,pt_text,choose_pt, &font, cvScalar(0,0, 0, 255));cvCircle(one_pt_img1,choose_pt,2,cvScalar(255,0,0,0) ,CV_FILLED, CV_AA, 0 );//仅含当前点}cvShowImage("img1",temp1);cvWaitKey(0);}

原创粉丝点击