2012-04-02 2 views
0

Я пытаюсь создать программу, используя opencv library. Я намерен сделать лазерную мышь.OpenCV C++ как сделать нажатие кнопки?

пока что программа может обнаружить точку лазера и переместить местоположение курсора в это место в реальном времени.

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

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

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

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

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

ответ

1

Клик может быть представлена ​​с помощью лазерного указателя и исчезающие, появляющиеся рядом на том же месте, и только если это происходит в течение 1 секунды.

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

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