Having trouble creating a class based implementation of OpenCV's mouseCallback function

后端 未结 2 1479
遥遥无期
遥遥无期 2021-02-09 23:11

As the title suggest, I\'m having some trouble implementing OpenCV\'s mouseCallback function in a class based C++ structure. Allow me to explain. I have defined a class called B

2条回答
  •  清歌不尽
    2021-02-10 00:05

    I was using this method too, however I realized that the static helper class was quite rigid and type and method bound.

    Just for further reference I've defined a templated free function that looks like:

    template
    void FreeOnMouseCallback(int event, int x, int y, int flags, void* ptr)
    {
        auto* mcPtr = static_cast(ptr);
        if(mcPtr != NULL)
        {
          (mcPtr->*MouseClickType)(event, x, y, flags);
        }
    }
    

    And I can now call arbitrary functions (matching the signature, but not the name) inside classes with

     cv::setMouseCallback( WindowName, FreeOnMouseCallback, this );
    

    It might be extended if the void* ptr is also required, but I've omitted it here.

提交回复
热议问题