Compilando o OpenCV 2.4.9 com o MinGW

Post date: 24/11/2014 13:33:50

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.

b

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 .

    1. 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.

    1. 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

    1. 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

    1. # Package Information for pkg-config

    2. prefix=@prefix@

    3. exec_prefix=@exec_prefix@

    4. libdir=@libdir@

    5. includedir=d:/opencv_build/install/include/opencv

    6. includedir2=d:/opencv_build/install/include

    7. Name: OpenCV

    8. Description: Intel(R) Open Source Computer Vision Library

    9. Version: @VERSION@

    10. 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

    11. 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.