vc++ Windows フォーム アプリケーションで opencv マウス処理を実行できません。次のエラーが表示されます
エラー 29 エラー C3867: 'touch_gui_trial1::Form1::mouseHandler': 関数呼び出しに引数リストがありません。「&touch_gui_trial1::Form1::mouseHandler」を使用して、メンバーへのポインターを作成します c:\users\mridul\documents\visual studio 2010\projects\touch_gui_trial1\Form1.h 104 1 touch_gui_trial1
コードスニペットは次のとおりです
public ref class Form1 : public System::Windows::Forms::Form
{
public:
int i,cntr2,count,camno,cntr,ch,prev,flag_camno,hand_thresh_area;
static int handthresharea=0,flagroi=0,drag;
static Point sz,point;
void mouseHandler(int event, int x, int y, int flags, void* param)
{
IplImage* img0;
img0=(IplImage *)param;
/* user press left button */
if (event == CV_EVENT_LBUTTONDOWN && !drag)
{
point = Point(x, y);
drag = 1;
}
/* user drag the mouse */
if (event == CV_EVENT_MOUSEMOVE && drag)
{
img1 = cvCloneImage (img0);
cvRectangle(
img1,
point,
cvPoint(x, y),
CV_RGB(255, 0, 0),
1, 8, 0
);
cvShowImage("Image taken", img1);
}
/* user release left button */
if (event == CV_EVENT_LBUTTONUP && drag)
{
img1 = cvCloneImage(img0);
cvSetImageROI(img1,cvRect(point.x,point.y,x - point.x,y - point.y));
sz.x=x - point.x;
sz.y=y - point.y;
//cvNot(img1, img1); // or do whatever with the ROI
//cvResetImageROI(img1);
cvNamedWindow("the roi",1); cvShowImage("the roi", img1);
flagroi=1;
drag = 0;
}
/* user click right button: reset all */
if (event == CV_EVENT_RBUTTONUP)
{
//cvShowImage("Image taken", img0);
drag = 0;
}
}
int select_roi()
{
CvCapture *frame;
IplImage* img0;
IplImage* img1;
frame=cvCaptureFromCAM(0);
cvNamedWindow( "ROI Selection", CV_WINDOW_AUTOSIZE );
if ( !frame )
{
fprintf( stderr, "ERROR: capture is NULL \n" );
getchar();
return -1;
}
img0= cvQueryFrame(frame);
cvShowImage("ROI Selection", img0);
cvSetMouseCallback("ROI Selection", ::mouseHandler, img0);
**//error is in the above line**
return 0;
}
// rest は select roi が呼び出される GUI 部分です。