在javacv中使用cvSetMouseCallback



我对编程相当陌生,我一直在使用javacv做一些图像处理,但我很难找到使用iplimage的鼠标事件的坐标。我想通过点击左键得到iplimage的(x,y)坐标。如果有人能给我一个如何使用这个功能的基本例子,我会非常感激。我上网看了看,我看到的所有东西都令人困惑。我知道参数是cvSetMouseCallback("字符串",on_mouse, null),但我不知道on_mouse是什么。

所以使用这个方法的代码片段是:

    cvNamedWindow("LKpyr_OpticalFlow", CV_WINDOW_AUTOSIZE);
    cvShowImage("LKpyr_OpticalFlow", imgC);
    CvMouseCallback on_mouse = new CvMouseCallback() {
        @Override
        public void call(int event, int x, int y, int flags, com.googlecode.javacpp.Pointer param) {
            System.out.println("point = (" + x + ", " + y + ")");
        }
    };
    cvSetMouseCallback("LKpyr_OpticalFlow", on_mouse, null);
    cvWaitKey(0);

要回答on_mouse问题,它只是一个鼠标回调。换句话说,当鼠标事件发生时会发生什么?在上面的代码中,通过覆盖调用方法实现了一个简短的CvMouseCallback。在这段代码中,x和y坐标显示在标准输出中。可以在这里找到原始类CvMouseCallback的代码。

你怎么知道是什么调用了回调呢?在要调用的事件参数中给出。通常的区分方法是在事件上执行switch语句。例如,左键对应CV_EVENT_LBUTTONDOWN。因此,如果您只想打印左键,请确保even等于上面的常量。

相关内容

  • 没有找到相关文章