#include <cv.h>
#include <highgui.h>
CvPoint point,pt,pt1,pt2,pt3,pt4;
bool Drawing=false;
int count=0;
void MouseDraw(int event,int x,int y,int flags,void*param);
void DrawLine(IplImage*img,CvPoint point)
void DrawPoint(IplImage*img,CvPoint point)
{
cvLine(img,cvPoint(point.x,point.y),cvPoint(point.x,point.y),cvScalar(0xff,0x00,0x00));
}
int main(int argc,char**argv)
{
cvNamedWindow("Draw_Win",CV_WINDOW_AUTOSIZE);
IplImage*img=cvCreateImage(cvSize(200,200),IPL_DEPTH_8U,3);
cvSetMouseCallback("Draw_Win",
MouseDraw,
(void*)img); //Set the callback function of mouse event
cvZero(img);
IplImage*temp=cvCloneImage(img);
while(1)
{
cvCopyImage(img,temp);
if(Drawing)
DrawPoint(temp,point);
cvShowImage("Draw_Win",temp);
if(cvWaitKey(100)==27)
break;
}
cvReleaseImage(&img);
cvReleaseImage(&temp);
cvDestroyWindow("Draw_Win");
return 0;
}
void MouseDraw(int event,int x,int y,int flags,void*param)
{
IplImage*img=(IplImage*)param;
switch(event)
{
if(count<5)
{
case CV_EVENT_MOUSEMOVE:
{
if(Drawing)
{
Drawing=false;
point=cvPoint(x,y);
}
}
break;
case CV_EVENT_LBUTTONDOWN:
{
Drawing=true;
DrawPoint(img,point);
point=cvPoint(x,y);
count++;
if(count==1)
{
pt1=point;
}
if(count==2)
{
pt2=point;
}
if(count==3)
{
pt3=point;
}
if(count==4)
{
pt4=point;
}
}
break;
case CV_EVENT_LBUTTONUP:
{
Drawing=false;
point=cvPoint(x,y);
}
break;
}
}
if(count==4)
{
cvLine(img,cvPoint(pt1.x,pt1.y),cvPoint(pt2.x,pt2.y),cvScalar(0xff,0x00,0x00));
cvLine(img,cvPoint(pt1.x,pt1.y),cvPoint(pt3.x,pt3.y),cvScalar(0xff,0x00,0x00));
cvLine(img,cvPoint(pt1.x,pt1.y),cvPoint(pt4.x,pt4.y),cvScalar(0xff,0x00,0x00));
cvLine(img,cvPoint(pt2.x,pt2.y),cvPoint(pt3.x,pt3.y),cvScalar(0xff,0x00,0x00));
cvLine(img,cvPoint(pt2.x,pt2.y),cvPoint(pt4.x,pt4.y),cvScalar(0xff,0x00,0x00));
cvLine(img,cvPoint(pt3.x,pt3.y),cvPoint(pt4.x,pt4.y),cvScalar(0xff,0x00,0x00));
}
}
D:/EPark/EPark/imageviewer.cpp:977: error: argument of type `void (ImageViewer::)(int, int, int, int, void*)' does not match `void (*)(int, int, int, int, void*)'