在opencv中创建复选框/按钮

时间:2013-03-08 17:36:10

标签: opencv

  

在opencv中创建按钮时出错   'void(Window ::)(int,void *)'类型的参数与'cv :: ButtonCallback {aka void()(int,void )}'

不匹配
class Window{
    void ChecKBox(int state, void* val){
         // do nothing for now
         return;
    }
public:
    void createCheckbox(){
        cv::createButton(checkboxname, CheckBox, NULL, CV_CHECKBOX, 0);
    }
};

int main(){
    Window w;
    w.createCheckBox();
}

我似乎无法找到解决此问题的方法。

1 个答案:

答案 0 :(得分:1)

哦,你不能在这里传递一个类的成员函数。想一想,'this'指针来自哪里? (就像你调用类成员一样w.CheckBox(1,NULL);这里没有'w'。)

highgui接口有点受限。它只能调用自由函数或静态成员。

所以,如果您的回调函数不需要Window中的任何内容,请将其设为静态:

class Window {
     static void CheckBox(int state, void* val) { /*you can't use 'this' here!*/ return; }
public: 
     void createCheckBox() { cv::createButton(checkboxname, CheckBox, NULL, CV_CHECKBOX, 0); } 
};

int main() {
    Window w; 
    w.createCheckBox();
}