代码之家  ›  专栏  ›  技术社区  ›  I.Newton

可以同时在两个窗口上设置OpenCV鼠标回调吗?

  •  2
  • I.Newton  · 技术社区  · 7 年前

    是否可以同时在两个不同的窗口上设置OpenCV鼠标回调,以确定鼠标在哪个窗口上?

    1 回复  |  直到 7 年前
        1
  •  3
  •   Micka    7 年前

    是的,有可能:

    void onMouse(int event, int x, int y, int, void* userData)
    {
        int * windowID = (int*)userData;
        std::cout << "mouse in window: " << (*windowID) << std::endl;
    
        if((*windowID) == 1)
        {
            // do whatever you want to do for window 1
        }
        else if((*windowID) == 2)
        {
            // do whatever you want to do for window 2
        }
    }
    
    int main(int argc, char* argv[])
    {
        cv::Mat input = cv::imread("C:/StackOverflow/Input/Lenna.png");
    
        cv::imshow("input1", input);
        cv::imshow("input2", input);
    
        int id1 = 1;
        int id2 = 2;
        cv::setMouseCallback("input1", &onMouse, &id1);
        cv::setMouseCallback("input2", &onMouse, &id2);
    
        cv::waitKey(0);
        return 0;
    }
    

    enter image description here

    enter image description here