OpenCV C ++, как сделать остановку клика? - PullRequest
0 голосов
/ 02 апреля 2012

Я пытаюсь собрать программу с использованием библиотеки opencv. Я собираюсь сделать лазерную указку мышью.

На данный момент программа может определять лазерную точку и перемещать курсор в нужное положение в реальном времени.

Теперь я хочу дать программе возможность выполнить щелчок и, если возможно, двойной щелчок.

Единственная идея, которая у меня есть, это сделать это, поиграв со значением координаты для определенного кадра и вычесть координату текущего кадра с координатой последнего кадра.

моя проблема ... я не знаю, как реализовать это в коде

я должен использовать массив для хранения координат ?? или любое другое решение, которое я мог бы использовать ??

заранее спасибо ..

1 Ответ

1 голос
/ 03 апреля 2012

Щелчок может быть представлен исчезновением и появлением лазерной указки рядом с той же точкой, и только если это происходит в течение 1 секунды.

Вы можете сохранить координаты последних кадров в std::vector из CvPoint и выполнить простой поиск по этому вектору, когда лазерный указатель появится снова. Последние 30 или около того координат должны быть сохранены, поэтому у вас всегда будут координаты этой последней 1 секунды записи (при 30 кадрах в секунду).

Двойной щелчок - небольшое улучшение одиночного щелчка. Для простоты двойной щелчок можно увидеть как 2 одиночных щелчка, обнаруженных в течение 2 секунд.

...