2013-04-29 3 views
0

Недавно я начал играть в Starcraft II, и у меня возникла проблема, которая более интересна для меня сейчас, чем сама игра.Использование веб-камеры в качестве датчика

Есть 3 способа управления камерой в игре:

  1. Клавиши клавиатуры [Up] [Down] [Влево] [Вправо]
  2. Прокрутка край экрана с помощью мыши
  3. Удерживать среднюю кнопку мыши для прокрутки

Я предпочитаю прокрутку клавиатуры, потому что она гладкая. Мне не нравится способ перемещения камеры при прокрутке с помощью мыши.

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

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

Есть ли простой способ отличить цвета или ориентацию от веб-камеры? Я вижу реализацию: рисовать каждую сторону матча четырьмя цветами, по одной для каждого направления: вверх, вниз, влево, вправо. Поместите спичку в рот и перейдите к языку вверх, вниз, влево и вправо.

Если веб-камера может различать эти цвета, это идеальный джойстик для перемещения вверх, вниз, влево и вправо.

Я хочу использовать его в Starcraft II, но после его внедрения он может использоваться в других играх и любых других проектах.

Я могу сделать Python.

Существуют ли какие-либо программируемые решения для превращения веб-камеры в датчик?

+1

Не могли бы вы объяснить, что вы подразумеваете под «совпадением во рту»? – 2013-04-29 07:21:13

+0

Да, есть много решений. Но вам все равно придется реализовать много по своему усмотрению. Самый быстрый способ - связать ваше приложение с камерой kinnect: http://openkinect.org/wiki/Python_Wrapper, и это даст вам быстрый способ отличить движения. – Torxed

+0

«матч во рту» - это просто образная идея. Это может быть что угодно с четырьмя сторонами и длинными. http://www.clipartof.com/interior_wall_decor/details/Cartoon-Fire-Eater-Holding-A-Match-In-His-Mouth-Poster-Art-Print-1044389 –

ответ

0

Перейдите на страницу http://openkinect.org/wiki/Python_Wrapper и получите код. Используйте обертку для различения движений (основы должны были бы измерять один кадр с другим фреймом и вычислять направление, в котором определенное среднее значение (oldPixelArea, newPixelArea), и это даст вам ваши элементы управления.).

Следующим шагом было бы отправить нажатия клавиш в Starcraft, который, по своему усмотрению, не разрешен, если я знаю, что метель достаточно хорошо. Но вы могли бы использовать: https://code.google.com/p/pywinauto/

Если у вас нет камеры kinnect (или вы не хотите ее использовать). Вам нужно было бы реализовать ВСЕ по своему усмотрению в принципе. Все, начиная с чтения кадров изображений (один за другим), анализируя трехмерные движения или только на выбранную область, где молния не может сильно отличаться и использовать ее как " фиксируя "точку, чтобы читать движения в направлениях.

Pygame может считывать данные с веб-камерой, так что это было бы хорошим началом: http://www.pygame.org/docs/tut/camera/CameraIntro.html

+0

Благодарим вас за так много полезных ссылок! Я сделаю все возможное. –

0

Я предлагаю вам проверить OpenCV, который является очень хорошая библиотека компьютерного зрения. У них есть привязки для многих языков, включая Python.

Вы найдете несколько учебников и примеры кода, которые помогут вам написать обнаружения лица/отслеживания программного обеспечения, например:

+0

Спасибо за ссылки! –

Смежные вопросы