私のクラス名はHandMotionRecognitionで、私はマウスコールバックでgetColorPixelメソッドを呼び出しています。これはOpenCVでVisual Studio 2010を使用しており、プロジェクトタイプはC++ - > cliです。OpenCV 2.1 Managed C++(CLI/C++)のcvSetMouseCallback
標準コードは(私は誤解だ場合を除き)マウスイベントを処理するために
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
だから私はこのようなデリゲートを作成...私はHandMotionRecognition.hでdelegate void MouseCallbackDelegate(int event, int x, int y, int flags, void *param);
を入れ
I [作成delegate..Iが、これは100%正しいことを知りません]
cvSetMouseCallback("CameraIn", &HandMotionRecognition::getColorPixel, (void*) frameHSV);
MouseCallbackDelegate ^StaticDelInst = gcnew MouseCallbackDelegate(this, &HandMotionRecognition::getColorPixel);
cvSetMouseCalの代わりにHandMotionRecognition.cppにこのコードを置きますlback( "CameraIn"、StaticDelInst、(void *)frameHSV);
しかし、それは、コンパイルエラーを与える:(これは私が得る唯一のエラーである)
error C2664: 'cvSetMouseCallback' : cannot convert parameter 2 from 'HandMotionRecognition::MouseCallbackDelegate ^' to 'CvMouseCallback'
を(私ができるようsee..thisについては代わりのWin32のCLIを使用したためです)
ここで回避策がありますか、ここで何か間違っていますか?
助けてください...
エラーメッセージのかなり完全なセットです。 :-)残念ながら、CVは関数ポインタ(ネイティブ)をパラメータとして望んでいるようです。その関数は決してメンバ関数、管理された、またはネイティブではありません。 –
感謝の気持ち... メンバー機能ではうまくいかないことは分かっていましたが...もう一度opencvを調べるべきです... これで修正されました。 クラスから「getColorPixel()」を削除し、同じファイル(クラスの外にある)に追加しました。それは今すぐに動作します – Sachira