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:
Instalação de um compilador gcc
Compilação da biblioteca OpenCV
Configuração do PKG-Config para auxiliar a compilação do MinGW
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.
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)
Extrai-se o arquivo para dentro da pasta bin do mingw.
no caso deste tutorial, c:\MinGW\bin
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
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
prefix=@prefix@
exec_prefix=@exec_prefix@
libdir=@libdir@
includedir=d:/opencv_build/install/include/opencv
includedir2=d:/opencv_build/install/include
Name: OpenCV
Description: Intel(R) Open Source Computer Vision Library
Version: @VERSION@
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.