在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();
}

我似乎找不到解决这个问题的办法。

哦,这里不能传入类的成员函数。想想看,"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();
}

相关内容

  • 没有找到相关文章