제목에서 알 수 있듯이 OpenCV의 mouseCallback 함수를 C++ 기반 클래스에서 구현하는 데 문제가 있습니다. 설명 할 수있게 해줘. 나는 BriskMatching이라는 클래스를 정의했다.이 클래스에서 OpenCV가 요구하는 올바른 매개 변수를 사용하여 mouseCallback이라는 멤버 함수를 만들었습니다 (아래의 코드 스 니펫을 참조하십시오). OpenCV의 mouseCallback 함수의 클래스 기반 구현을 만드는 데 문제가 있습니다.
**Briskmatching.h**
class BriskMatching
{
public:
BriskMatching();
~BriskMatching();
public:
void mouseCallback(int event, int x, int y, int flags, void *param);
};
이
내가 OpenCV의의cv::setMouseCallback
기능을 통해 지정된 마우스 콜백 기능으로이 기능을 설정하려고하면 그러나 내 문제가 발생, 모두 괜찮습니다. 내 주요 기능에
, 나는 그것이 내가 지금처럼 그것을 시도 마우스 콜백을 설정하는 시간을 ... 때 다음
cv::setMouseCallback("Matches", BriskMatching::mouseCallback, &matchesImg);
불행하게도,이 발생 briskMatcher라는 BriskMatching 클래스의 인스턴스를 생성 오류.
Error 3 error C3867: 'BriskMatching::mouseCallback': function call missing argument list; use '&BriskMatching::mouseCallback' to create a pointer to member c:\users\mobilef\documents\visual studio 2010\projects\opencv_objtracking\opencv_briskmatching\main.cpp 54 1 OpenCV_BriskMatching
나는 내가 mouseCallback 기능에 많은 비 정적 멤버 변수를 참조하기 때문에 내가 다른 오류의 전체 구타를 얻을 수 static
BriskMatching.h
에 있지만 다음과 같이 mouseCallback 기능을 선언하여이 오류를 제거 할 수있다.
제 질문은 여러분에게 있습니다. BriskMatching 클래스 내에서 선언 된 내 mouseCallback 함수를 cv::setMouseCallback
함수로 제대로 전달할 수 있도록 코드를 수정해야합니까?
전진 해 주셔서 감사합니다.
감사합니다. 그것은 훌륭하게 작동하지만, 그것의 논리 또는 작동 원리를 완전히 이해하지 못합니다. 저는 C++로 몇 년 동안 코딩을 해왔습니다.하지만 항상 타입 캐스트를 피 했으므로 항상 저에게 회색 영역이었습니다. 나는 지금 그들에게 읽어주기 위해 가서이 모든 것이 어떻게 작동하는지 이해하려고 노력할 것입니다. – szakeri