2013-03-01 82 views
0

我是相当新的编程和我一直在做一些使用javacv的图像处理,但我无法找到使用鼠标事件为iplimage的坐标。我基本上想要使用左键单击按钮来获取iplimage的(x,y)坐标。如果有人能给我一个关于如何使用这个函数的基本例子,我会非常感激。我在网上看,我看到的所有东西都相当混乱。我知道参数是cvSetMouseCallback(“string”,on_mouse,null),但是我不知道on_mouse是什么。在javacv中使用cvSetMouseCallback

回答

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

那么你怎么知道什么叫回调?这是在调用的事件参数中给出的。通常的区分方法是对事件做一个switch语句。例如,左边的按钮对应于CV_EVENT_LBUTTONDOWN。所以如果你只想打印左边的按钮,请确保它等于上述常数。