Sunday, January 1, 2017

Instalando OpenCV 2.4.3 para Windows

Ao iniciar os estudos para meu TCC, que envolve manipulação de imagens, tive de instalar o OpenCV na minha máquina porém notei que é um mais complexo que imaginei para instalar, e vi que tem pouco material sobre OpenCV em português, portanto, vou ensinar aqui a maneira que instalei e alguns problemas que passei durante a instalação.

Em primeiro lugar, baixei a versão 2.4 pois a versão 3 não consegui buildar e vi algumas pessoas como mesmo problema, então caso esteja com problemas para buildar o opencv e esteja utilizando a versão 3 pode ser este o seu problema.

Para instalar o OpenCV, é necessário baixar 3 programas
Caso você possua alguma IDE com o MinGW, recomendo desinstalar, pois ja tive problemas assim.

Primeiro vamos instalar o MinGW:
Após selecionar a pasta e instalar o manager, clique em continue
Os pacotes necessários são o mingw-gcc-g++ e o mingw-base, o resto é opcional


Após selecionar os pacotes, vá em Installation->Apply Changes
 Após concluir a instalação do MinGW, adicione o path às variáveis de ambiente do windows.
Para isso, clique com botão direito no Meu Computador, vá em Propriedades->Configurações avançadas->Variáveis de ambiente e edite o PATH das variáveis do sistema e adicione o diretório bin que está dentro da pasta MinGW, no meu caso, C:\MinGW\bin

Para conferir se a variável foi setada, abra um cmd e digite path para listar as variáveis. os diretórios inseridos devem estar na lista, caso contrário, reinicie o computador e verifique novamente.

Agora que o MinGW já foi instalado e configurado,instale o CMake, que não tem segredos. Então, vamos instalar o OpenCV
Extraia o arquivo para uma pasta raiz (já tive problema com extensão muito longa de arquivos, portanto é interessante manter o diretório o mais curto possível).
Após extrair, abra o CMake e no campo Source, coloque o diretório .../OpenCV/sources
No campo Build, coloque o diretório .../OpenCV/build/x86/mingw e clique em Generate e espere o CMake fazer o trabalho dele.
Após ter feito isto, vamos na pasta do MinGW e procurar um arquivo chamado commctrl.h e edita-lo (tive de fazer isso para arrumar um problema que tive durante a build)
Abra-o e procure esta linha que deve estar logo no começo
edite o if para 1 e o 0x0300 para 0x0500. Deve ficar assim
 Feito isso, vamos na pasta do OpenCV que criamos com o CMake .../OpenCV/build/x86/mingw. Na pasta, aperte SHIFT e clique com o botão direito para abrir um cmd já na pasta.
 abrindo o cmd, digite g++ --version para verificar se o MinGW foi instalado corretamente. Se foi instalado corretamente, deve aparecer a seguinte mensagem
Agora para construir o opencv, digite mingw32-make. O processo demora um pouco para completar. Na minha máquina demorou cerca de 30 minutos
Após o opencv ser construido, vamos inserir uma nova variável de ambiente para o opencv (se não inserir, ao tentar executar um projeto, o windows não vai encontrar alguns dlls e o projeto não será executado.) a variável é .../OpenCV/build/x86/mingw/bin
Assim como anteriormente, verifique em um cmd o path se está setado.
Agora o seu OpenCV já deve estar funcionando corretamente. Vamos testar com um projeto "hello world do opencv" que é um programa simples que abre uma imagem utilizando o opencv.
Instale o CodeBlocs sem compilador e configure para utilizar o MinGW instalado.
Crie um projeto 
Após criar o projeto, devemos configurar o projeto para que seja utilizado as bibliotecas do opencv.
Para isso, clique com o botão direito no projeto e vá em Build Options
 Vá na aba Search Directories -> Compiler e adicione o diretório .../OpenCV/build/include 
 Agora na aba Linker, adicione o diretório .../OpenCV/build/x86/mingw/lib  
 Na aba Linker Settings adicione todos os arquivos que estão dentro da pasta .../OpenCV/build/x86/mingw/lib  
 Agora que o projeto está configurado (você pode coloca-lo como um projeto padrão para que não precise configurar outros projetos futuros) vamos para o código:
coloque este código no seu projeto e execute:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

using namespace cv;

int main()
{
    Mat image;// new blank image
    image = cv::imread("test.png", 0);// read the file
    namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// create a window for display.
    imshow( "Display window", image );// show our image inside it.
    waitKey(0);// wait for a keystroke in the window
    return 0;
}

Coloque uma imagem com o nome test.png na pasta de seu projeto e compile e execute. Pronto!

No comments:

Post a Comment