Visão Computacional - Reconhecendo objetos na plataforma Linux via Webcam

Dispositivos de vídeo-captura ganham inteligência em função de algoritmos de visão computacional. Para tratar deste assunto, tal segmento demanda conhecimentos matemáticos, domínio com rotinas de processamentos de imagens e sólidos fundamentos sobre manipulação da API V4L2. Neste documento, veremos como utilizar todos estes conceitos com soluções Open Source.

[ Hits: 33.668 ]

Por: Alessandro de Oliveira Faria (A.K.A. CABELO) em 07/01/2013 | Blog: http://assuntonerd.com.br


O sistema find-object



Este pacote é uma solução de código aberto baseado em Qt e OpenCV na plataforma GNU/Linux, que permite o learning (aprendizado) e detectar o objeto recém aprendido pelo sistema.

Este projeto é de código aberto, então, é uma boa fonte de aprendizagem para os programadores. Pois além de manipular Webcam, utiliza diversos algoritmos de reconhecimento de padrão como SURF e outros. Bom, chega de blá-blá-blá.

A instalação é simples. Efetue o download do código fonte no link a seguir:

# wget http://find-object.googlecode.com/files/Find-Object-0.4.0-Source.zip

Agora descompacte o arquivo com o comando unzip conforme o exemplo abaixo:

# unzip Find-Object-0.4.0-Source.zip
Archive: Find-Object-0.4.0-Source.zip
inflating: Find-Object-0.4.0-Source/build/.empty
inflating: Find-Object-0.4.0-Source/src/AddObjectDialog.h
inflating: Find-Object-0.4.0-Source/src/ParametersToolBox.h
inflating: Find-Object-0.4.0-Source/src/Camera.h
inflating: Find-Object-0.4.0-Source/src/ParametersToolBox.cpp
inflating: Find-Object-0.4.0-Source/src/resources.qrc
inflating: Find-Object-0.4.0-Source/src/AboutDialog.cpp
inflating: Find-Object-0.4.0-Source/src/KeypointItem.h
inflating: Find-Object-0.4.0-Source/src/ui/mainWindow.ui
inflating: Find-Object-0.4.0-Source/src/ui/addObjectDialog.ui
inflating: Find-Object-0.4.0-Source/src/ui/aboutDialog.ui
inflating: Find-Object-0.4.0-Source/src/QtOpenCV.h
inflating: Find-Object-0.4.0-Source/src/AddObjectDialog.cpp
inflating: Find-Object-0.4.0-Source/src/Settings.cpp
inflating: Find-Object-0.4.0-Source/src/MainWindow.cpp
inflating: Find-Object-0.4.0-Source/src/AboutDialog.h
inflating: Find-Object-0.4.0-Source/src/ObjWidget.h
inflating: Find-Object-0.4.0-Source/src/utilite/UFile.cpp
inflating: Find-Object-0.4.0-Source/src/utilite/UFile.h
inflating: Find-Object-0.4.0-Source/src/utilite/UDirectory.cpp
inflating: Find-Object-0.4.0-Source/src/utilite/UDirectory.h
inflating: Find-Object-0.4.0-Source/src/utilite/UPlot.h
inflating: Find-Object-0.4.0-Source/src/utilite/UPlot.cpp
inflating: Find-Object-0.4.0-Source/src/utilite/UStl.h
inflating: Find-Object-0.4.0-Source/src/resources/Find-Object.png
inflating: Find-Object-0.4.0-Source/src/resources/TheWorkingGroup_video_play.ico
inflating: Find-Object-0.4.0-Source/src/resources/TheWorkingGroup_video_stop.ico
inflating: Find-Object-0.4.0-Source/src/resources/TheWorkingGroup_video_pause.ico
inflating: Find-Object-0.4.0-Source/src/Camera.cpp
inflating: Find-Object-0.4.0-Source/src/Settings.h
inflating: Find-Object-0.4.0-Source/src/KeypointItem.cpp
inflating: Find-Object-0.4.0-Source/src/MainWindow.h
inflating: Find-Object-0.4.0-Source/src/QtOpenCV.cpp
inflating: Find-Object-0.4.0-Source/src/rtabmap/PdfPlot.h
inflating: Find-Object-0.4.0-Source/src/rtabmap/PdfPlot.cpp
inflating: Find-Object-0.4.0-Source/src/ObjWidget.cpp
inflating: Find-Object-0.4.0-Source/.project
inflating: Find-Object-0.4.0-Source/CMakeLists.txt
inflating: Find-Object-0.4.0-Source/example/CMakeLists.txt
inflating: Find-Object-0.4.0-Source/example/main.cpp
inflating: Find-Object-0.4.0-Source/bin/box.png
inflating: Find-Object-0.4.0-Source/bin/box_in_scene.png
inflating: Find-Object-0.4.0-Source/.cproject
inflating: Find-Object-0.4.0-Source/LICENSE
inflating: Find-Object-0.4.0-Source/README
inflating: Find-Object-0.4.0-Source/app/CMakeLists.txt
inflating: Find-Object-0.4.0-Source/app/Find-Object.icns
inflating: Find-Object-0.4.0-Source/app/Find-Object.ico
inflating: Find-Object-0.4.0-Source/app/Find-Object.ifx
inflating: Find-Object-0.4.0-Source/app/main.cpp
inflating: Find-Object-0.4.0-Source/app/Find-Object.rc
inflating: Find-Object-0.4.0-Source/cmake_uninstall.cmake.in

Para iniciar a compilação, entre na pasta Find-Object-0.4.0-Source/build e utilize o comando cmake:

# cd Find-Object-0.4.0-Source/build
# cmake ..

-- The C compiler identification is GNU 4.7.1
-- The CXX compiler identification is GNU 4.7.1
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Looking for Q_WS_X11
-- Looking for Q_WS_X11 - found
-- Looking for Q_WS_WIN
-- Looking for Q_WS_WIN - not found.
-- Looking for Q_WS_QWS
-- Looking for Q_WS_QWS - not found.
-- Looking for Q_WS_MAC
-- Looking for Q_WS_MAC - not found.
-- Found Qt4: /usr/bin/qmake (found version "4.8.1")
-- --------------------------------------------
-- Info :
--    CMAKE_INSTALL_PREFIX = /usr/local
--    CMAKE_BUILD_TYPE = Release
-- --------------------------------------------
-- Configuring done
-- Generating done
-- Build files have been written to: /tmp/Find-Object-0.4.0-Source/build

Para iniciar a compilação e instalação, abaixo os comandos:

# make
# make install


Conceitos operacionais

Inicie o programa Find Object com o comando find_object, como no exemplo abaixo. Logo após, iniciaremos a nossa Webcam pressionando a tecla espaço. Se tudo estiver funcionando corretamente, entre na opção "EDIT" do menu, e selecione o item "Add object from scene".

find_object
Agora, para executar o modo learning (aprendizado computacional), devemos focar a Webcam no objeto desejado e selecionar os pontos característicos do objeto e logo a seguir, clique em "NEXT".
Linux: Visão Computacional - Reconhecendo objetos na plataforma Linux via Webcam   Linux: Visão Computacional - Reconhecendo objetos na plataforma Linux via Webcam
Pronto, ao concluir o processo, o sistema passa a identificar e/ou reconhecer no vídeo, ao vivo, o objeto selecionado anteriormente.
A seguir, um vídeo demonstrativo com a funcionalidade do sistema em operação...

Mais dicas sobre este assunto, disponibilizarei no meu blog:
Para finalizar, críticas e sugestões: cabelo[ at ]opensuse.org
Linux: Visão Computacional - Reconhecendo objetos na plataforma Linux via Webcam
Página anterior    

Páginas do artigo
   1. Visão Computacional - Breve introdução
   2. Download e instalação
   3. O sistema find-object
Outros artigos deste autor

fprint: Biometria livre, completa e total!

TerminatorX: Linux nas discotecas para os DJs!

Torne o seu servidor um mirror de atualização do Antivírus AVG (revisão)

MainActor: Edição de vídeo profissional (Adobe Premiere) em Linux

Faça um incrível espetáculo de efeitos visuais com vídeo em tempo real

Leitura recomendada

Proteção de tela ou vídeo como papel de parede

GIMP - Colocando um desenho de traços sobre outra superfície

Monitorando interfaces virtuais com MRTG e IPFM

Tutorial GIMP: Preparando mapas para artigos científicos

Um pouco de luz, cor e o Gimp

  
Comentários
[1] Comentário enviado por fabio em 07/01/2013 - 17:52h

Não sei de onde tu tira tanta coisa maluca pra implementar :)

Muito bom! Parabéns Cabelo.

[2] Comentário enviado por tsuriu em 07/01/2013 - 18:12h


[1] Comentário enviado por fabio em 07/01/2013 - 17:52h:

Não sei de onde tu tira tanta coisa maluca pra implementar :)

Muito bom! Parabéns Cabelo.


Parabéns Cabelo... O incrível é que eu tava mesmo procurando algo justamente desse tipo..

VLW MSM...

[3] Comentário enviado por removido em 07/01/2013 - 19:37h

Esse cara tem VISÃO!

Parabéns, Cabelo.

[4] Comentário enviado por eldermarco em 07/01/2013 - 22:26h

Sensacional! Quando eu crescer, quero ser que como ele! hahaha

[5] Comentário enviado por laerciomotta em 08/01/2013 - 10:35h

Maravilha, porem fiz os testes aqui, tudo funcionou mais o find_object não encontrou minha webcam..

Camera initialization failed! (with device 0)

Pelo cheese aparece a webcam normal...

Sistema: Ubuntu 12.04 w/ Gnome Shell (64 bits)
Notebook Dell Vostro v131

Parabens!
[]'s

[6] Comentário enviado por diego.agudo em 08/01/2013 - 21:40h

Mto bom o artigo!
Me diga uma coisa, você já testou se ele também serve para reconhecimento facial? Parece que a idéia é a mesma, não?!

[]s

[7] Comentário enviado por tiagofontoura em 12/01/2013 - 18:51h

beleza cabelo, sera que e muito pessado para raspberry pi?

[8] Comentário enviado por nsoluiz em 19/01/2013 - 10:11h

tche
bom dia
sei que o teu tempo é pouco, vou tentar ser direto…
1 – desculpa postar isso aqui, sei que nao é o lugar correto, se responder fico muito agradecido…
2 – comprei um pentv da infinitoo(http://www.infinitoweb.com.br/sistema/ck/files/downloads/infinito_pentv_driver.zip), gostaria de saber de ti de tem como um ubuntu desktop 12.10 ser um servidor de Streaming de tv, pode fazer um tutorial eu dar as dicas?
3 – não que eu deixei por ultimo, pra que tu aches que estou enchendo o teu ego, mas posso te garantir, tu é um bagal de 1ª estancia, muito bom o conteudo que tu posta no blog e no viva o linux, parabens.
muito obrigado pela atenção e desculpas novamente.

[9] Comentário enviado por marcosregato em 04/08/2014 - 03:22h

Deu erro na minha instalação, estou instalando OpenCV 2.4.9 no Ubuntu.Olha o erro

[ 70%] Building CXX object modules/legacy/CMakeFiles/opencv_legacy.dir/src/blobtrackinglist.cpp.o
[ 70%] [ 70%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_ds.cpp.o
Building CXX object modules/imgproc/CMakeFiles/opencv_perf_imgproc.dir/perf/perf_houghLines.cpp.o
[ 70%] Building CXX object modules/imgproc/CMakeFiles/opencv_perf_imgproc.dir/perf/perf_threshold.cpp.o
Linking CXX shared library ../../lib/libopencv_legacy.so
[ 70%] Built target opencv_legacy
Linking CXX executable ../../bin/opencv_perf_core
[ 70%] Built target opencv_perf_core
Linking CXX executable ../../bin/opencv_perf_imgproc
[ 70%] Built target opencv_perf_imgproc
Linking CXX executable ../../bin/opencv_test_core
[ 70%] Built target opencv_test_core
make: ** [all] Erro 2

Alguém pode me ajuda ?

[10] Comentário enviado por CRACKER-FENIX em 16/10/2014 - 03:52h

parabéns um bom trabalho no artigo algo útil e eficaz mais uma vez o cabelo inovando :-)


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts