正如标题所示,我在基于类的 C++ 结构中实现 OpenCV 的 mouseCallback 函数时遇到了一些麻烦。请允许我解释一下。我已经定义了一个名为 BriskMatching 的类,我在其中创建了一个名为 mouseCallback 的成员函数,其中包含 OpenCV 所需的正确参数(请参阅下面的代码片段)。
**Briskmatching.h**
class BriskMatching
{
public:
BriskMatching();
~BriskMatching();
public:
void mouseCallback(int event, int x, int y, int flags, void *param);
};
这一切都很好,但是当我尝试通过 OpenCV 的cv::setMouseCallback
函数将此函数设置为指定的鼠标回调函数时,我的问题就出现了。
在我的主函数中,我创建了一个名为 briskMatcher 的 BriskMatching 类的实例,然后当需要设置鼠标回调时,我尝试这样做......
cv::setMouseCallback("Matches", BriskMatching::mouseCallback, &matchesImg);
不幸的是,这会引发错误。
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
in来消除此错误,BriskMatching.h
但是由于我在 mouseCallback 函数中引用了许多非静态成员变量,因此我得到了一大堆其他错误。
所以我对你们的问题是这个。我应该如何修改我的代码才能正确地将 BriskMatching 类中声明的 mouseCallback 函数传递给该cv::setMouseCallback
函数?
感谢您在高级方面的所有帮助!