Infra - Linux
Linux: Camera Kombat: Mortal Kombat ao vivo com WebCam
Camera Kombat é um projeto que utiliza recursos da biblioteca OpenCV, utilizada em aplicações de visão computacional. Com o processamento do vídeo ao vivo os movimentos realizados pelos jogadores são interpretados e convertidos em ação no jogo. Neste artigo veremos como funciona o projeto como um todo.
por Alessandro de Oliveira Faria
Em primeiro lugar parabenizo os autores do projeto Fábio R. de Miranda, Luis Roberto Pereira de Paula e Renato Bonini Neto. O trabalho e a idéia foram excelentes, estou desenvolvendo pesquisas sobre visão computacional e pensava em desenvolver algo similar se um dia tivesse tempo disponível.
O trabalho de tratamento de imagens deste projeto ficou sobre responsabilidade das funções da biblioteca OpenCV. Para quem não sabe, OpenCV ou Open Source Computer Vision é uma biblioteca com mais de 500 funções de geração e manipulação de imagens, que ajuda os pesquisadores a desenvolverem aplicações de visão computacional, como o reconhecimento de face, de gestos, de formas ou objetos e atualmente o reconhecimento audiovisual. Desde o seu lançamento em 2000, a OpenCV presenciou mais de 500.000 downloads de código e atraiu mais de 5.000 membros inscritos para seu grupo de usuários.
Tentarei descrever um resumo de como funciona o projeto. Quando uma seqüencia dos movimentos com os braços são identificados, um objeto virtual (o poder) é disparado contra o adversário. O adversário deve se desviar deste objeto (poder) que caminha em sua direção.
As imagens são capturas de uma webcam, analisadas, processadas e exibidas no monitor. Na inicialização o sistema captura uma imagem para processar os elementos e/ou objetos estáticos presente na cena.
Depois de definido o fundo capturado inicialmente pela webcam, o processo de subtração acontece pixel a pixel com os quadros extraídos do vídeo ao vivo. Logo após são localizados as regiões cabeça, mãos, pés e centro de massa.
Ao detectar todos os pontos, os gestos devem ser identificados. Para isto verifica-se o ângulo formado pela abertura do braço e distância da altura da mão comparado a cabeça. Na figura abaixo, reparem que os braços ligeiramente abertos não caracterizam socos, já com o braço inteiramente aberto é reconhecido como um soco.
Agora chega de historinha e vamos descer o dedo para o teclado ;-) Download e instalação da biblioteca OpenCV
Para instalar a biblioteca a partir do código fonte, baixe o pacote .tar.gz, descompacte e execute os tradicionais comandos de magia negra ./configure, make e make install, como no exemplo abaixo.
# wget http://easynews.dl.sourceforge.net/sourceforge/opencvlibrary/opencv-1.0.0.tar.gz
# tar -zxvf opencv-1.0.0.tar.gz
# cd opencv-1.0.0
# ./configure
Se todas as dependências foram satisfeitas e tudo estiver funcionando
corretamente, teremos uma tela similar ao resultado logo abaixo: General configuration ================================================
Compiler: g++
CXXFLAGS: -Wall -fno-rtti -pipe -O3 -g -march=i686
-ffast-math -fomit-frame-pointer
Install path: /usr/local
HighGUI configuration ================================================
Windowing system --------------
Use Carbon / Mac OS X: no
Use gtk+ 2.x: yes
Use gthread: yes
Image I/O ---------------------
Use libjpeg: yes
Use zlib: yes
Use libpng: yes
Use libtiff: yes
Use libjasper: yes
Use libIlmImf: no
Video I/O ---------------------
Use QuickTime / Mac OS X: no
Use xine: no
Use ffmpeg: no
Use dc1394 & raw1394: no
Use v4l: yes
Use v4l2: yes
Wrappers for other languages =========================================
SWIG
Python yes
Additional build settings ============================================
Build demo apps yes
Now run make ...
Agora execute os mágicos comandos make e make install.
#
make
# make install
Se preferir instalar os pacotes .rpm, abaixo
as instruções de download e instalação:
# wget http://nomis80.org/rpms/fedora/4/opencv-0.9.7-3.i386.rpm
# wget http://nomis80.org/rpms/fedora/4/opencv-devel-0.9.7-3.i386.rpm
# rpm -ivh opencv-0.9.7-3.i386.rpm
# rpm -ivh
opencv-devel-0.9.7-3.i386.rpm
Se você chegou até aqui parabéns, pois o seu sistema está preparado para compilar o projeto Camera-Kombat.
Download e compilação do Camera Kombat
Não vou ficar enrolando com textos cansativos, o download dever ser efetuado no repositório SVN do sourceforge. Abaixo as instruções para a extração do código-fonte.
# svn co https://svn.sourceforge.net/svnroot/camera-kombat camera-kombat A camera-kombat/build_all.sh A camera-kombat/camera_kombat_sem_flip.c A camera-kombat/camera_kombat.c A camera-kombat/telas A camera-kombat/telas/ponte_1_255.jpg A camera-kombat/telas/metro_255.jpg A camera-kombat/telas/street_255.jpg A camera-kombat/telas/calabouco_255.jpg A camera-kombat/telas/bank_255.jpg A camera-kombat/telas/belltower_255.jpg A camera-kombat/telas/cemiterio_255.jpg A camera-kombat/cubo.c A camera-kombat/bola_sem_flip.c A camera-kombat/bola.c Gerado cópia de trabalho para revisão 2. # cd camera-kombat
Execute o script build_all.sh para compilar todos os fontes presente no diretório.
# sh build_all.sh compiling bola.c compiling bola_sem_flip.c compiling camera_kombat.c compiling camera_kombat_sem_flip.c compiling cubo.c
Se algo sair errado, como no meu caso, troque o path dos arquivos de cabeçalho da biblioteca OpenCV no script build_all.sh e tente novamente.
Troque de:
g++ -I/usr/local/include/opencv
Para:
g++ -I/usr/include/opencv/
Agora vamos ao show, execute o programa camera-kombat como no exemplo abaixo:
$ ./camera-kombat
Pronto, divirta-se à vontade. Abaixo a relação das teclas de função:
[B] - Determina um novo fundo estático (sem os jogadores presentes);
[P] - Captura a imagem e salva em disco;
[T] - Habilita/Desabilita o modo debug;
[F] - Muda a tela de fundo (cenário);
[N] - Novo jogo.
Abaixo alguns screenshots:
"O próximo grande salto evolutivo da humanidade será a descoberta de que cooperar é melhor que competir"
Prof. Pietro Ubaldi
Sobre o autor: http://www.netitec.com.br/alessandro
- Login automático com SSH e Automatização da instalação (deploy) e atualização de sites com GitLinux
- Extensão Sun Presentation Minimizer para Broffice.ORGLinux
- Otimização de Desempenho em sistemas GNU/LinuxLinux
- Hardware para sistemas GNU/Linux - Dicas de Desempenho - Parte 3Hardware
- Hardware para sistemas GNU/Linux - Dicas de Desempenho - Parte 2Hardware