OpenCV - tutorial detecção de blobs e movimento - parte 1
Olá,
Recentemente me envolvi em um projeto de uma pequena instalação (quase) artística, que consiste basicamente em controlar a exibição de vídeos, e slideshows, de acordo com a movimentação de quem está vendo o material.
Para isso comecei a estudar conceitos de ‘computer vision’ , detecção de faces, blobs e movimentos em vídeos. Porquê? Porque quem vai detectar o movimento do espectador é uma câmera! Logo, é necessário interpretar, de alguma forma, as imagens captadas pela câmera.
Seguindo comprovações científicas sobre o processo de aprendizado, estou escrevendo esse tutorial, para me ajudar a fixar o que estou aprendendo. Logo, vale ressaltar que, eu não sou um especialista no assunto, estou aprendendo o mesmo. E se o relato desse processo lhe for tão útil quando será para mim, ótimo!
Para esses primeiros estudos vou usar o Processing, a biblioteca OpenCV, e uma biblioteca para o Processing chamada Blob Detection. Se até o final o resultado se mostrar bom o suficiente, vou ficar no Processing mesmo, caso contrário vou para um C++ ou ObjectiveC. Estou desenvolvendo esse projeto em Linux e Mac OSX. Caso você esteja no Windows, sei lhe dizer que tudo isso vai funcionar da mesma forma, porém caso ocorra algum problema, ou você tenha alguma dúvida, que esteja diretamente relacionada as especificidades do Windows, NÃO PODEREI TE AJUDAR! Faz muito tempo que não trabalho no Windows, e confessor que perdi completamente a transição para o Vista e para o 7. E nesse caso o melhor lugar para pedir ajuda é nos fóruns do Processing.
Preparação
Para começar a brincadeira são necessárias algumas instalações, que dependem da plataforma que vc está utilizando, além das instalações básicas (Processing, OpenCV, biblioteca OpenCV para o Processing):
Mac: Essa é a plataforma em que você terá menos trabalho, basta instalar a biblioteca BlobDetection, alem das instalações básicas (Processing, OpenCV, biblioteca OpenCV para o Processing).
Linux: Aqui vc terá mais trabalho. Mas nada sobre humano… Para o Linux você terá que instalar uma biblioteca para que o Processing leia e renderize as imagens da câmera: A GSVideo, que utilizará o Gstreamer para isso (No Mac e no Windows geralmente o Processing usa o Quicktime). E claro você precisará de um driver para que o GStreamer acesse a câmera, nesse caso usei o V4l (video4linux) e foi o suficiente. Além, claro, das instalações básicas (Processing, OpenCV, biblioteca OpenCV para o Processing).. ah… não se esqueça da biblioteca BlobDetection.
Windows: Além das instalações básicas (Processing, OpenCV, biblioteca OpenCV para o Processing), você precisará, assim como no Linux, de uma biblioteca para renderização de vídeo, você pode optar pelo QuickTime, ou pelo GStreamer. Eu recomendaria usar o Quicktime, porque o Processing já é tudo integrado com ele. E… não se esqueça da biblioteca BlobDetection.
Eu não vou explicar aqui os detalhes de instalação dos softwares e bibliotecas, porque nos sites de cada um dos projetos, e internet adentro, já existem tais informações.
Agora o próximo passo é abrir o Processing e fazer um teste. Vejamos.
Veja na imagem abaixo, o código básico para um primeiro teste:

Olha como isso deve funcionar:
Agora a próxima etapa é Começar a analizar as imagens e interpretá-las. Ainda bem que a biblioteca OpenCV faz bastante coisa para agente.
Abraço e até mais.