Depois da publicação do artigo sobre o AR.Drone na internet, estou em fase final da pesquisa sobre o desenvolvimento com o quadricópetor AR.Drone utilizando a sua API aberta para criar uma aplicação para controlar e processar com visão computacional (utilizando openCV) obtendo os frames da camera frontal na plataforma openSUSE 11.4 64 bit. Os recursos utilizadados foram a GPU, programação multi-bloco (TBB). Os fontes em breve no Open Built Service do (OBS), pois preciso terminar a resolução de vários bugs. Por enquanto fiquem com um screenshot e vídeo claro!. Agradecimentos ao Thiago e Estevão pela elaboração do vídeo…
Arquivo da categoria: opencv
Video: Contando e identificando pessoas.
Conforme mencionei no post anterior, deixo neste post o vídeo dos testes inicias na CPU. Tem um longo caminho para percorrer, mas o start já foi executado…
Visão computacional – Identificando e contando pessoas.
Começo hoje a minha jornada laboratorial sobre reconhecimento de padrões matemáticos para identificar e contar pessoas diante do vídeo ao vivo. O teste inicial foi um sucesso, porém agora o próximo passo é processar frames ao vivo na CPU e na GPU (CLARO). Após trabalhar com o conjunto de referências matemáticas e constatado a presença de um corpo humano, e se a distância entre os olhos (em pixel) for suficiente, posso processar automaticamente o reconhecimento facial assim não descartando nenhum frame em virtude do premunição matemática.
OpenCV no Android
Meu próximo desafio é portar o legado laboratorial da biblioteca openCV para a plataforma Android, pois além de prover a portabilidade, os novos modelos apresentam o Tegra da NVIDIA no qual é possível integrar com o NDK da Google. Então deixo aqui a minha receita de bolo.
Compilação principal. $ export ANDROID_NDK=/dados/neti/programas64/android-ndk-r5c $ export ANDROID_NDK_TOOLCHAIN_ROOT=/dados/neti/programas64/android-ndk-r5c/toolchains $ cd android/ $ sh ./scripts/cmake_android.sh ou cmake_android_armeabi.sh $ cd build ou cd build_armeabi/ $ make -j8 $ make install Compilação do código exemplo hello word. $ cd opencv/android/apps/HelloAndroid $ sh ./cmake_android.sh ou cmake_android_armeabi.sh $ cd ./build_armeabi $ make $ adb push HelloAndroid /data $ adb shell chmod 777 /data/HelloAndroid $ adb shell /data/HelloAndroid $ adb pull /mnt/sdcard/HelloAndroid.png Compilação da biblioteca. $ cd android-opencv/ $ sh ./cmake_android.sh $ cd build $ make -j8 OBS: Verificar nos scripts a presença do parâmetro -DARM_TARGET=armeabi
OpenCV 2.3 lançada.
Acabou de sair do forno a biblioteca openCV 2.3. As principais novidades que me interessam no momento, estão relacionada aos meus sofrimentos dos posts anteriores, ou seja utilização do NVIDIA CUDA 4 e suporte para NVIDIA na plataforma Android utilizando o NDK(esta tarefa não são para os fracos de coração). Otimização dos algoritmos utilizando TBB também foi implementada. O recurso do opencv_stitching para criar imagens panorâmicas foi disponibilizada com grandes melhorias. Agora entro para uma nova jornada, inclusive instalar o Android 2.3 no meu modesto DEXT com overclock. Em breve posts e mais posts…
Abaixo a linha de compilação...
cmake -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_LATEX_DOCS=OFF -DBUILD_OCTAVE_SUPPORT=ON \ -DBUILD_PYTHON_SUPPORT=ON -DBUILD_SWIG_PYTHON_SUPPORT=ON \ -DBUILD_TESTS=ON -DENABLE_OPENMP=OFF -DENABLE_PROFILING=OFF \ -DBUILD_PYTHON_SUPPORT=ON -DBUILD_NEW_PYTHON_SUPPORT=ON \ -DBUILD_EXAMPLES=ON -DINSTALL_C_EXAMPLES=ON -DINSTALL_OCTAVE_EXAMPLES=ON \ -DINSTALL_PYTHON_EXAMPLES=ON -DWITH_1394=ON -DWITH_TBB=ON \ -DWITH_CUDA=ON -DWITH_FFMPEG=ON -DWITH_GSTREAMER=OFF \ -DWITH_QT=ON -DWITH_GTK=ON -DWITH_JASPER=ON -DWITH_JPEG=ON \ -DWITH_PNG=ON -DWITH_TIFF=ON -DWITH_V4L=ON -DWITH_XINE=ON \ -DENABLE_SSE=ON -DENABLE_SSE2=ON -DENABLE_SSE3=ON \ -DENABLE_SSSE3=ON -DENABLE_SSE41=ON -DENABLE_SSE42=ON -DWiTH_QT=ON ..
openCV, TBB e GPU (programação multinúcleo)
Após os testes com o a biblioteca openCV na GPU conforme o post anterior, agora compilei a openCV também com a lib TBB. Resultado: a
aplicação que estava processando aproximadamente 120 FPS passou a processar mais de 170 FPS. Tudo isto em função da programação paralela. Escrito em C++.O TBB se encarrega na adaptação do software, ou seja determinando o número ideal de threads e tornando uma realidade a programação multinúcleo.
openCV com GPU
Após a conclusão da instalação do NVIDIA CUDA 4 conforme o post anterior, compartilho o finalização dos testes laboratoriais nas madrugadas e final de semana, onde utilizo a biblioteca openCV na plataforma openSUSE 11.4 utilizando a GPU.
Após o download dos fontes da biblioteca openCV, devemos fazer algumas pequenas alterações:
– Crie as pastas abaixo para manter a compatibilidade com o CUDA 3.2 e não perder muito cabelo:
/usr/local/cuda/NPP/SDK/common/lib64/ /usr/local/cuda/NPP/SDK/common/npp/include/
– Copie as bibliotecas do CUDA 4 SDK a seguir na pasta lib64:
libnpp.so (link simbólico) libnpp.so.4 (link simbólico) libnpp.so.4.0.17
– Copie os arquivos .h do CUDA 4 SDK abaixo na pasta include:
nppcore.h nppdefs.h npp.h nppi.h npps.h nppversion.h
Agora um cmake para começar a brincadeira…
cmake \ -DCMAKE_BUILD_TYPE=RELEASE \ -DBUILD_LATEX_DOCS=OFF \ -DBUILD_OCTAVE_SUPPORT=ON \ -DBUILD_PYTHON_SUPPORT=ON \ -DBUILD_SWIG_PYTHON_SUPPORT=ONF \ -DBUILD_TESTS=ON \ -DENABLE_OPENMP=OFF \ -DENABLE_PROFILING=OFF \ -DBUILD_PYTHON_SUPPORT=ON \ -DBUILD_NEW_PYTHON_SUPPORT=ON \ -DCMAKE_INSTALL_PREFIX=%{_prefix} \ -DLIB_INSTALL_DIR=%{_libdir} \ -LIB_SUFFIX=64 \ -DBUILD_EXAMPLES=ON \ -DINSTALL_C_EXAMPLES=ON \ -DINSTALL_OCTAVE_EXAMPLES=ON \ -DINSTALL_PYTHON_EXAMPLES=ON \ -DWITH_1394=ON \ -DWITH_CUDA=ON \ -DWITH_FFMPEG=ON \ -DWITH_GSTREAMER=OFF \ -DWITH_QT=ON \ -DWITH_GTK=ON \ -DWITH_JASPER=ON \ -DWITH_JPEG=ON \ -DWITH_PNG=ON \ -DWITH_TIFF=ON \ -DWITH_V4L=ON \ -DWITH_XINE=ON \ -DCUDA_NPP_LIBRARY_ROOT_DIR=/usr/local/cuda/NPP/SDK/ \ -DENABLE_SSE=ON \ -DENABLE_SSE2=ON \ -DENABLE_SSE3=ON \ -DENABLE_SSSE3=ON \ -DENABLE_SSE41=ON \ -DENABLE_SSE42=ON \ .
Para finalizar um video demonstrando um FaceFind COM UMA WEBCAM USB e o alto processamento utilizando a api NVIDIA CUDA 4 com openCV.
Certiface ® – O futuro da certificação facial.
Disponibilizo neste post o vídeo publicitário sobre a tecnologia Certiface® já mencionada aqui no blog, ou seja um serviço de certificação facial para o combate a fraude no mercado. Criado pela NETi SOLUÇÕES TECNOLÓGICAS, o produto foi desenvolvido baseado em algoritmos de reconhecimento facial, tratamento e otimização de imagem além de possuir escalabilidade e alta disponibilidade para trabalhar na ordem de grandeza de milhões de usuários.
NagiosVision: Tem humanos no seu servidor (publicado)
Desenvolvi o plugin NagiosVision com o objetivo de criar alertas baseado em comportamentos processados direto do vídeo ao vivo (utilizando a biblioteca openCV junto ao nagios no que ele faz de melhor). Sendo assim, o Nagios pode reportar a detecção de padrão de objetos e faces presentes diante a webcam instalada no seu servidor.
Com este recurso, torna-se possível a contagem de pessoas, análise de fluxo, prevenção a assaltos, análise de trânsito podem serem monitorados em tempo real com um simples dispositivo de captura junto ao poder do Nagios.
O download pode ser efetuado no Source Forge : [sourceforge.net/…] ou na página oficial dos plugins do Nagios: [exchange.nagios.org/…]
Para iniciar, deixo uma receita de bolo sobre o projeto no Viva o Linux. Favor críticas e sugestões enviar para cabelo@opensuse.org” [referência: vivaolinux.com.br]. Abaixo o logo do projeto…
Nagios Vision: Tem humanos perto do seu servidor.
Acabo de testar a primeira versão alfa de um plugin do nágios, que detecta faces humanas utilizando os módulos de visão computacional da biblioteca OpenCV. Após a detecção utilizando o NSCA Cliente do nágios o servidor é notificado com alertas.
Os níveis de alertas são parametrizados de acordo com a distância da face. Após enviar a notificação ao Nágios, o plugin também envia um e-mail com a foto recém processada. Em breve um artigo no Viva O Linux explicando passo-a-passo todo o procedimento. Por enquanto deixo as ilustrações.



