Мое имя класса - HandMotionRecognition, и я вызываю метод getColorPixel при обратном вызове мыши.Это в OpenCV с использованием Visual Studio 2010, и тип проекта - c ++ -> cli.
Стандартный код (если я не ошибаюсь) для обработки событий мыши -
cvSetMouseCallback( "CameraIn", getColorPixel, (void*) frameHSV);
Но когда якомпиляция выдает ошибку времени компиляции
ошибка C3867: 'HandMotionRecognition :: getColorPixel': вызов функции отсутствует список аргументов;используйте '& HandMotionRecognition :: getColorPixel', чтобы создать указатель на член
Затем я делаю, как я сказал, и помещаю код следующим образом ...
cvSetMouseCallback( "CameraIn", &HandMotionRecognition::getColorPixel, (void*) frameHSV);
Но снова я получаюошибка компиляции ..
ошибка C3374: невозможно получить адрес 'HandMotionRecognition :: getColorPixel', если не создается экземпляр делегата
Так что я создаю такой делегат... [создание делегата .. Я не знаю, что это на 100% правильно]
Я положил delegate void MouseCallbackDelegate( int event, int x, int y, int flags, void *param );
в HandMotionRecognition.h
Iпоместите этот код в HandMotionRecognition.cpp вместо cvSetMouseCallback( "CameraIn", &HandMotionRecognition::getColorPixel, (void*) frameHSV);
MouseCallbackDelegate ^StaticDelInst = gcnew MouseCallbackDelegate(this, &HandMotionRecognition::getColorPixel);
cvSetMouseCallback ("CameraIn", StaticDelInst, (void *) frameHSV);
Но этозатем выдает ошибку компиляции: (это единственная ошибка, которую я получаю)
ошибка C2664: «cvSetMouseCallback»: невозможно преобразовать параметр 2 из «HandMotionRecognition :: MouseCallbackDelegate ^» в «CvMouseCallback»
(Насколько я могу видеть ... это связано с использованием cli вместо win32)
Есть ли обходной путь или я здесь что-то не так делаю ???
Пожалуйста, помогите ...