我的類名是HandMotionRecognition,我在鼠標回調中調用getColorPixel方法。這是使用Visual Studio 2010的OpenCV,項目類型是C++ - > cli。OpenCV 2.1中的cvSetMouseCallback託管C++(CLI/C++)
標準代碼(除非我錯了)來處理鼠標事件是
cvSetMouseCallback("CameraIn", getColorPixel, (void*) frameHSV);
但是,當我編譯它給一個編譯時錯誤
error C3867: 'HandMotionRecognition::getColorPixel': function call missing argument list; use '&HandMotionRecognition::getColorPixel' to create a pointer to member
那麼我是因爲我告訴和把這樣的代碼...
cvSetMouseCallback("CameraIn", &HandMotionRecognition::getColorPixel, (void*) frameHSV);
但我又得到一個編譯錯誤..
error C3374: can't take address of 'HandMotionRecognition::getColorPixel' unless creating delegate instance
所以我創建一個委託這樣的... [創建delegate..I不知道這是100%正確]
我把
delegate void MouseCallbackDelegate(int event, int x, int y, int flags, void *param);
在HandMotionRecognition.h我把這個代碼HandMotionRecognition.cpp代替
cvSetMouseCallback("CameraIn", &HandMotionRecognition::getColorPixel, (void*) frameHSV);
MouseCallbackDelegate ^StaticDelInst = gcnew MouseCallbackDelegate(this, &HandMotionRecognition::getColorPixel);
cvSetMouseCal的lback(「CameraIn」,StaticDelInst,(void *)frameHSV);
但後來它提供了編譯錯誤:(這是唯一的錯誤,我得到)
error C2664: 'cvSetMouseCallback' : cannot convert parameter 2 from 'HandMotionRecognition::MouseCallbackDelegate ^' to 'CvMouseCallback'
(至於我可以see..this是由於使用CLI而不是win32)中
有沒有解決這個問題或者我在這裏做錯了什麼?
請幫助...
這是一個非常完整的錯誤消息。 :-)不幸的是,CV似乎需要一個函數指針(native)作爲參數。該功能永遠不會是成員功能,託管或本地。 –
Thankx的信息... 我不知道它不適用於成員函數...應該再次查看opencv ... 它現在是固定的.. 從類中刪除了「getColorPixel()」,並將其添加到同一個文件中(僅在類的外部)。它現在可以工作 – Sachira