我有一个问题,有关在C++中使用类时如何在OpenCV中定义轨迹栏的回调。

当我定义轨迹栏时,让我们在.cpp类的构造方法中说如何定义回调?

我一直在尝试使用函数指针,但没有成功。我想我一定做错了什么:-)

这是我的头文件:

class SliderwithImage {

public:
    SliderwithImage(void);
    ~SliderwithImage(void);

    void sliderCallBack(int pos);
};

这是实现文件:
#include "SliderwithImage.h"

void SliderwithImage::sliderCallBack(int pos) {


}

SliderwithImage::SliderwithImage(void)  {

    const char* windowName = "window";
    int lowvalue  =1;

    namedWindow(windowName,  CV_GUI_EXPANDED);

    createTrackbar("mytrackbar", windowName, &lowvalue, 255, sliderCallBack);

}

SliderwithImage::~SliderwithImage(void) {

}

显然,createTrackbar方法无法识别sliderCallBack ...我想这是范围问题。但是我不确定该如何解决?

任何帮助,将不胜感激。

非常感谢你。

最佳答案

您必须将回调函数实现为全局函数或静态成员函数。为了使其具有更多的OOP外观,您可能希望将其实现为静态成员函数:)

10-08 00:43