Face Detection

Face Detection Application

Este documento contém as duas versões para a aplicação:

  • Versão Android

  • Versão Desktop

Versão Android

Instalação da Biblioteca

Fazer download da versão para Android em https://opencv.org/releases/.

Desconpactar e mover para /usr/lib/:

$ unzip opencv-4.0.1-android-sdk.zip

$ sudo mv OpenCV-android-sdk/ /usr/lib/opencv-4.0.1-android-sdk

$ sudo ln -s /usr/lib/opencv-4.0.1-android-sdk/ /usr/lib/OpenCV-android-sdk

Projeto no Android Studio

Criar um projeto do tipo Empty Activity, linguagem Java chamado OpenCVApplication no Android Studio. Clique em Start a new Android Studio project.

Depois em Empty Activity e em Next.

Preencha as informações necessárias e clique Finish:

  • Name: OpenCVApplication

  • Package name: br.com.meslin.opencvapplication

  • Save location: /home/meslin/Documents/GoogleDrive/Doutorado/Android (ou um lugar qualquer sem espaço em branco na path e sem o nome do projeto)

  • Language: Java

Selecione FileNewImport Module… e use a path /usr/lib/OpenCV-android-sdk/sdk/java. Clique Finish.

Clique Finish.

Selecione FileProject Structure… e clique na aba Dependencies.

Clique no botão + localizado no alto, a esquerda, logo abaixo de All Dependencies e selecione Modules Dependency.

Clique com o botão direito do mouse em res dentro de app na aba Android e selecione New e depois Android Resource Directory. No campo Directory name: entre com raw. Em Resouce type: selecione raw. Deixe Chosen qualifiers: em branco. Clique em OK. Arraste o arquivo HAARCASCADE para dentro do diretório criado.

To include an external library (a JAR file), open build.gradle (Module: FaceDetector344.app) and add the library implementation description as shown below.

Code online available at Face Detector at GitHub.

Versão Desktop

Compilar a biblioteca

Antes de começar, verifique se os pré-requisitos obrigatórios estão instalados:

  • Apache ant

  • CMake

Se precisar instalar, use o seguinte comando:

$ sudo apt install -y ant cmake

Fazer download do código fonte a partir de https://opencv.org/releases/. Neste exemplo vamos utilizar a versão 4.4.0. Descompacte o arquivo ZIP em um diretório e crie o subdiretório build.

Descompacte o arquivo. Dentro do diretório descompactado, crie um novo diretório chamado Build. De dentro do diretório Build, execute o CMake:

$ unzip opencv-4.4.0.zip

$ cd opencv-4.4.0/

$ mkdir build

$ cd build/

$ cmake -D BUILD_SHARED_LIBS=OFF ..

$ cmake -D BUILD_SHARED_LIBS=OFF -D CMAKE_INSTALL_PREFIX=/opt/OpenCV ..

Verifique se as configurações de Java estão corretas: ant e JNI.

-- Java:
-- ant: /snap/bin/ant (ver 1.10.9)
-- JNI: /usr/lib/jvm/java-8-openjdk-amd64/include /usr/lib/jvm/java-8-openjdk-amd64/include/linux /usr/lib/jvm/java-8-openjdk-amd64/include
-- Java wrappers: YES
-- Java tests: YES

--
-- Install to: /usr/local

-- -----------------------------------------------------------------
--
-- Configuring done
-- Generating done
-- Build files have been written to: /home/meslin/Desktop/opencv-4.4.0/build

Se tudo estiver certo, execute o make:

$ make

O arquivo opencv-440.jar deverá estar criado dentro do diretório bin:

$ ls -l bin/opencv-440.jar

-rw-rw-r-- 1 meslin meslin 656045 nov 28 08:19 bin/opencv-440.jar

Crie uma biblioteca com esse arquivo no Eclipse. Uma sugestão é copiar o diretório build para /opt/OpenCV e criar a biblioteca a partir lá:

$ sudo cp -r * /media/meslin/4E7E313D7E311EE1/opt/OpenCV/build/

$ ls -l /opt/OpenCV/

total 0
drwxrwxrwx 1 root root 160 nov 30 15:07 build

Para utilizar a biblioteca OpenCV na linha de comando, utilize a seguinte sintaxe (atenção à ordem dos parâmetros: o -jar deve ser o último):

$ java -Djava.library.path=/opt/OpenCV/build/lib/:/opt/OpenSplice/HDE/x86_64.linux/lib/ -classpath /opt/OpenCV/bin/opencv-440.jar -jar CoreServer.jar

Configurar o Eclipse

Para criar a biblioteca com o OpenCV, clique com o botão direito do mouse no projeto, selecione Build Path, Configure Build Path... e clique na aba Libraries. A janela Properties for <seu projeto> vai abrir.

Clique no botão Add Library....

Na janela Add Library, selecione User Library e clique Next.

Na janela Add Library, clique no botão User Library .

Na janela Preferences (Filtered), clique no botão New....

Em New User Library,informe o nome da biblioteca em User library name::

OpenCV-4.4.0

E clique OK

De volta a janela Preferences (Filtered), selecione a biblioteca recém-criada e clique no botão Add External JARs....

Na janela JAR Selection, navegue até o JAR opencv-440.jar, selecione-o e clique em Open.

De volta a janela Preferences (Filtered), expanda o JAR recém-criado, selecione Native library location: e clique em Edit....

Entre com a path para a biblioteca do OpenCV:

/media/meslin/4E7E313D7E311EE1/opt/OpenCV/build/lib/

A biblioteca está criada, clique nos botões para terminar, aceitando as modificações.

Bonus: se estiver com problemas de compatibilidade entre o OpenCV e o OpenSlice (provavelmente estará), ainda dentro de Build Path expanda o item JRE System Library [JavaSE-1.8] e clique em Native library location:.

Clique em Edit... e entre com a path da biblioteca do OpenCV:

/opt/OpenSplice/HDE/x86_64.linux/lib/

Clique nos botões para terminar, aceitando as modificações.

Código fonte disponível em https://github.com/AlexandreMeslin/FaceDetectorContextNet.