19,468
社区成员
发帖
与我相关
我的任务
分享
#include "cv.h"
#include "highgui.h"
#include <stdio.h>
#pragma comment( lib, "cv.lib" )
#pragma comment( lib, "cxcore.lib" )
#pragma comment( lib, "highgui.lib" )
IplImage* imgOriginal = 0;
IplImage* img = 0;
void on_mouse( int event, int x, int y, int flags, void* ustc)
{
if( !img )
return;
CvPoint prev_pt;
CvPoint pt;
if( event == CV_EVENT_LBUTTONDOWN )
{
prev_pt = cvPoint(x,y);
pt = cvPoint(x,y);
}
else if( event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON))
{
cvLine( img, prev_pt, pt, cvScalar(255,0,255,0), 3, CV_AA, 0 );
pt = cvPoint(x,y);
cvLine( img, prev_pt, pt, cvScalar(0,255,0,0), 8, CV_AA, 0 );
cvShowImage( "image", img );
}
}
int main( int argc, char** argv )
{
printf( "Hotkeys: \n"
"ESC - quit the program\n"
"r - restore the original image\n");
imgOriginal=cvCreateImage(cvSize(800,600),IPL_DEPTH_8U,3);
cvSet(imgOriginal,cvScalar(255,255,255,0));
// imgOriginal=cvLoadImage("f:\\lena.jpg",1);
img = cvCloneImage( imgOriginal );
cvNamedWindow( "image", 1 );
cvShowImage( "image", img );
cvSetMouseCallback( "image", on_mouse, 0 );
while(true)
{
int c = cvWaitKey(0);
if( (char)c == 27 )
break;
if( (char)c == 'r' )
{
cvCopy( imgOriginal, img,0 );
cvShowImage( "image", img );
}
}
cvDestroyWindow("image");
cvReleaseImage(&imgOriginal);
cvReleaseImage(&img);
return 0;
}