2013-03-01 3 views
0

Я довольно новичок в программировании, и я занимаюсь обработкой изображений с помощью javacv, но у меня возникли проблемы с поиском координаты с использованием события mouse для iplimage. В основном я хочу получить координату (x, y) iplimage с помощью левой кнопки мыши. Я был бы очень благодарен, если бы кто-нибудь мог дать мне базовый пример того, как использовать эту функцию. Я смотрел онлайн, и все, что я видел, было довольно запутанным. Я знаю, что параметры: cvSetMouseCallback («string», on_mouse, null), однако я понятия не имею, что такое on_mouse.using cvSetMouseCallback в javacv

ответ

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 отображаются на стандартный вывод. code можно найти здесь для оригинального класса CvMouseCallback.

Итак, как вы узнали, что называется обратным вызовом? Это указывается в параметре события для вызова. Обычный способ отличия состоит в том, чтобы сделать оператор switch над событием. Например, левая кнопка соответствует CV_EVENT_LBUTTONDOWN. Поэтому, если вам нужна только левая кнопка для печати, убедитесь, что она равна указанной константе.