Tutoriais‎ > ‎OpenCV‎ > ‎

Compilando o OpenCV 2.4.9 com o MinGW

postado em 24 de nov de 2014 05:33 por Prof. Rodrigo Costa   [ 24 de nov de 2014 14:16 atualizado‎(s)‎ ]
Neste tutorial serão descritos as ações necessárias para compilar a versão do OpenCV 2.4.9 para uso no Eclipse e no Codeblocks.

Resumidamente, são necessários os seguintes passos:
  1. Instalação de um compilador gcc
  2. Compilação da biblioteca OpenCV
  3. Configuração do PKG-Config para auxiliar a compilação do MinGW
  4. Testando a compilação no prompt

1. Instalação do Compilador GCC

Para instalação do compilador é necessário fazer o download do setup de instalação do Mingw http://sourceforge.net/projects/mingw/files/latest/download?source=files.

Ao executar o arquivo de instalação, deve-se escolher o local de instalação do mingw e alguns detalhes sobre a ferramenta de download do MinGW.

Na imagem ao lado é feita a configuração básica do MinGW.  A configuração é dividida em dois estágios, no primeiro estágio é feita a seleção do local aonde o compilador será instalado e detalhes simples de configuração. 

É possível permitir a escolha de quais usuários podem realizar a instalação de pacotes do MINGW. Recomenda-se utilizar as configurações mostrada na figura ao lado para evitar que usuários leigos alterem os pacotes existentes do MINGW e desconfigurem o ambiente.

Depois disso, o ambiente de obtenção de pacotes do MinGW será baixado e ao final do download, a ferramenta de gerenciamento de pacotes do MinGW é aberta automaticamente
 


Na ferramenta de gerenciamento, o usuário pode escolher quais pacotes do MinGW serão obtidos e configurados no Sistema. Ao clicar com o botão direito em qualquer pacote listado, é possível escolher cinco opções:
  • mark for instalation: o pacote selecionado será obtido e configurado. 
  • mark for reinstalation: o pacote será reinstalado
  • mark for upgrate: será feito o upgrate do pacote
  • mark for removal: o pacote será excluído
  • unmark : aborta a seleção feita.
Deve-se selecionar para download os pacotes, conforme mostrado na figura da direita:
  • mingw32-base
  • mingw32-gcc-g++
Concluída a seleção, deve-se ir no menu Instalation > Apply Changes.



Para tornar possível a compilação do opencv é necessário incluir no path do sistema o diretório MINGW\bin. Na figura ao lado é mostrado como configurar a variável de ambiente path.

Para fazer isto, deve-se clicar no menu iniciar e escrever variáveis, conforme mostrado na figura a seguir. Caso o usuário deseje alterar as variáveis para todos os usuários, deve clicar em editar as variáveis de ambiente do sistema. Caso o usuário deseje que apenas ele tenha acesso, deve-se clicar em editar as variáveis de ambiente para sua conta.

Deve-se inserir no path o diretório bin do mingw. No caso desse exemplo, foi inserido no path o diretório C:\MINGW\bin
 


Para testar se o compilador está disponível, deve-se ir no prompt de comando e inserir o comando mingw32-gcc --help. A seguir é apresentado o resultado desse procedimento.

 
Caso apareça um resultado similar, você instalou e configurou corretamente o mingw no seu pc.

2. Compilação do OpenCV 2.4.9 no Windows usando o MinGW 

Para compilação da biblioteca, é necessário a instalação da versão 2.8 do CMAKE para Windows e os códigos fonte do OpenCV. Os arquivos de instalação do CMAKE e do Opencv 2.4.9 estão disponíveis a seguir:

  • OpenCV 2.4.9: http://sourceforge.net/projects/opencvlibrary/files/opencv-win/2.4.9/opencv-2.4.9.exe/download
  • Cmake 2.8.12-2: http://www.cmake.org/files/v2.8/cmake-2.8.12.2-win32-x86.exe
Depois de obter os arquivos, faz-se a instalação do CMake. A única preocupação que deve ser tomada é que os diretórios do CMake devem ser incluídos automaticamente no path do sistema, conforme mostrado na figura a seguir.

depois de configurado o CMake, deve-se extrair os arquivos do opencv2.4.9 e depois clica-se no menu iniciar para abrir a interface gráfica do CMake, conforme mostrado na figura a seguir:

Na janela principal do CMake, deve-se selecionar o diretório dos códigos fonte e o diretório onde serão colocados os códigos compilados do mingw.
No exemplo mostrado na figura a seguir, os arquivos da biblioteca opencv foram colocados no diretório D:\. Desta forma, foi escolhido como origem o diretório D:\opencv\sources e foi selecionado o diretório opencv_build para guardar os códigos fontes configurados para a compilação.


Após a configuração da origem e destino da compilação, deve-se clicar em configure.  Durante a inicialização do processo, é solicitado o compilador e deve-se informar que será utilizado o compilador MinGW.

Após o processamento de todas as dependencias, será disponibilizado uma lista de opções de compilação. Exemplo: habilita ou não a compilação dos exemplos, etc. Após a seleção de todas as configurações, deve-se clicar em Generate para gerar as configurações de compilação. Depois disto, o código está pronto para ser compilado. Na figura a seguir é apresentado como realizar o processo de compilação.


Após todo o processo de compilação, deve-se fazer a instação da biblioteca. Durante a configuração foi setado o diretório de destino opencv_build\install. Para fazer isso, deve-se realizar o comando mingw32-make install


Para finalizar a configuração deve-se colocar no path do sistema o local aonde encontram-se a biblioteca. No caso deste exemplo foi colocado no path o diretório: D:\opencv_build\install\x86\mingw\bin

3. Configuração de uma ferramenta de configuração automática de projetos.

O pkg-config é uma ferramenta utilizada para a configurar qualquer projeto em sistemas Linux. Consegui juntar as algumas bibliotecas para rodar uma versão do pkg-config no Windows. No caso, deve-se colocar os arquivos necessários na pasta do compilador C e também configurar os parâmetros necessários ao PKG-CONFIG.
  1. Faz-se o download do arquivo em dispnível no link Download do PKG-CONFIG 
    Neste existe um executável pkg-config e também um arquivo opencv.pc (este arquivo irá guardar a configuração do seu sistema)
  2. Extrai-se o arquivo para dentro da pasta bin do mingw.
    no caso deste tutorial, c:\MinGW\bin
  3. Depois disso, cria-se uma variável de ambiente PKG_CONFIG_PATH e faz seu valor ser igual a pasta bin do mingw. Exemplo
    PKG_CONFIG_PATH = C:\MinGW\bin
  4. Depois disso, edita-se o arquivo opencv.pc, indicando o local correto do opencv e a versão correta das libs. Compilando a versão do OpenCV conforme realizado neste tutorial, foi gerado o seguinte arquivo opencv.pc
    # Package Information for pkg-config

    includedir=d:/opencv_build/install/include/opencv 
    includedir2=d:/opencv_build/install/include

    Name: OpenCV
    Description: Intel(R) Open Source Computer Vision Library
    Libs: -Ld:/opencv_build/install/x86/mingw/lib -llibopencv_calib3d249 -llibopencv_contrib249 -llibopencv_core249 -llibopencv_features2d249 -llibopencv_flann249 -llibopencv_gpu249 -llibopencv_highgui249 -llibopencv_imgproc249 -llibopencv_legacy249 -llibopencv_ml249 -llibopencv_nonfree249 -llibopencv_objdetect249 -llibopencv_photo249 -llibopencv_stitching249 -llibopencv_video249 -llibopencv_videostab249  

    Cflags: -I${includedir} -I${includedir2} -Wunused-functio

Depois disso, o pkg-config já está configurado. Para testar se o mesmo está configurado corretamente, deve-se abrir o prompt de comando e realizar os comandos, conforme mostrado na figura a seguir: 
  • pkg-config opencv --cflags : para testar se está configurado corretamente as diretrizes de compilação.
  • pkg-config opencv --libs: para testar se está configurado corretamente as diretrizes de linkagem.

Se aparecer as configurações mostradas acima, seu pkg-config está configurado corretamente.

4.Testando a configuração no CMD

Para testar a configuração, cria-se em qualquer pasta o código fonte mostrado a seguir:

teste.cpp : 

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

#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;


int main( int argc, const char** argv )
{
VideoCapture cap(0); // open the default camera
   if(!cap.isOpened())  // check if we succeeded
       return -1;

   Mat edges;
   namedWindow("original",1);
   for(;;)
   {
       Mat frame;
       cap >> frame; // get a new frame from camera
       imshow("original", frame);
       if(waitKey(30) >= 0) break;
   }
   // the camera will be deinitialized automatically in VideoCapture destructor
   return 0;
}

depois disso, vai-se até a pasta do arquivo e insere-se os seguintes comandos:

  • for /f "usebackq tokens=*" %a in (`pkg-config opencv --cflags`) do mingw32-g++ -c test.cpp %a -o main.o
  • for /f "usebackq tokens=*" %a in (`pkg-config opencv --libs`) do mingw32-g++ main.o %a -o test_opencv.exe
Na figura a seguir é mostrado a realização deste teste.

O código tem o objetivo apenas de abrir a câmera e mostrar o quadro adquirido em uma janela.

Comments