0

我对编程很陌生,我一直在使用 javacv 进行一些图像处理,但是我无法使用 iplimage 的鼠标事件找到坐标。我基本上想使用左键单击获取 iplimage 的 (x,y) 坐标。如果有人能给我一个如何使用此功能的基本示例,我将不胜感激。我在网上看了看,我看到的所有东西都相当混乱。我知道参数是 cvSetMouseCallback("string", on_mouse, null) ,但是我不知道 on_mouse 是什么。

4

1 回答 1

1

所以使用这种方法的一段代码是:

    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 问题,它只是一个鼠标回调。换句话说,当鼠标事件发生时会发生什么?在上面的代码中,通过重写 call 方法实现了一个简短的 CvMouseCallback。在此代码中,x 和 y 坐标显示到标准输出。 可以在此处找到原始类 CvMouseCallback的代码。

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

于 2014-01-29T20:15:05.887 回答