C ++类中的OpenCV轨迹栏回调 [英] OpenCV trackbar callback in C++ class

查看:111
本文介绍了C ++类中的OpenCV轨迹栏回调的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have a question about how to define the callback for trackbars in OpenCV when working with classes in C++.

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

When I define my trackbar let's say in the constructor method of my .cpp class how can I define the callback?

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

I have been trying to work with function pointers but it doesn't work out. I guess I must be doing something very wrong :-)

这是我的头文件:

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 ...我想这是范围问题.但是我不确定该如何解决?

Obviously the createTrackbar method does not recognize sliderCallBack... I guess it's a problem of scope. But I am not sure how to solve this?

任何帮助将不胜感激.

非常感谢您.

推荐答案

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

You have to implement the callback function either as a global function or a static member function. To make it more OOP look, you might prefer to implement it as a static member function:)

这篇关于C ++类中的OpenCV轨迹栏回调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆