Introdução ao OpenCV 2.4 e MinGW no Windows 7

Como eu instalo o OpenCV 2.4 e compilo meu código com o MinGW?

1. Instalando o OpenCV 2.4.3

Primeiro, pegue o OpenCV 2.4.3 do sourceforge.net. É uma auto-extração de arquivos, basta clicar duas vezes no arquivo para iniciar a instalação. Instale-o em um diretório, digamos C:\ .

Autoextração OpenCV

Aguarde até que todos os arquivos sejam extraídos. Ele criará um novo diretório C:\opencv que contém arquivos de header, bibliotecas, amostras de código do OpenCV, etc.

Agora você precisa adicionar o diretório C:\opencv\build\x86\mingw\bin ao PATH do seu sistema. Este diretório contém DLLs OpenCV que é necessário para executar seu código.

Abra o Painel de ControleSistemaConfigurações Avançadas do SistemaAba AvançadoVariáveis ​​de Ambiente …

Você verá uma janela como mostrada abaixo:

Adicionar diretório DLL OpenCV ao caminho do sistema

Na seção Variáveis ​​do sistema,
selecione Path (1), clique em Edit … (2), adicione C:\opencv\build\x86\mingw\bin (3) e clique em Ok .

Isso completará a instalação do OpenCV 2.4.3 no seu computador.


2. Instalando o compilador MinGW

Eu recomendo que você use o gcc (GNU Compiler Collection) para compilar seu código. O gcc é o conjunto de compiladores amplamente disponível nos sistemas Linux e o MinGW é a porta nativa do Windows.

Faça o download do instalador do MinGW no Sourceforge.net e dê um duplo clique para iniciar a instalação. Basta seguir o assistente e selecionar o diretório a ser instalado, por exemplo, C:\MinGW .

Selecione o diretório na instalação do MinGW

Selecione “C Compiler” e “C ++ Compiler” para ser instalado.

Selecione os componentes a serem instalados

O instalador irá baixar alguns pacotes da internet, então você tem que esperar um pouco. Após a conclusão da instalação, adicione C:\MinGW\bin ao caminho do sistema usando as etapas descritas anteriormente.

Adicionar o diretório bin do MinGW ao caminho do sistema

Para testar se sua instalação do MinGW é bem-sucedida, abra uma checkbox de linha de comando e digite: gcc . Se tudo estiver ok, ele exibirá esta mensagem:

 gcc: fatal error: no input files compilation terminated 

Isso conclui a instalação do MinGW, agora é a hora de escrever seu “Hello, World!” programa.


3. Escreva um código de amostra

Abra seu editor de texto e digite o código abaixo e salve o arquivo em loadimg.cpp .

 #include "opencv2/highgui/highgui.hpp" #include  using namespace cv; using namespace std; int main(int argc, char** argv) { Mat im = imread(argc == 2 ? argv[1] : "lena.jpg", 1); if (im.empty()) { cout < < "Cannot open image!" << endl; return -1; } imshow("image", im); waitKey(0); return 0; } 

Coloque lena.jpg ou qualquer imagem que você goste no mesmo diretório com o arquivo acima. Abra uma checkbox de linha de comando e compile o código acima digitando:

 g++ -I"C:\opencv\build\include" -L"C:\opencv\build\x86\mingw\lib" loadimg.cpp -lopencv_core243 -lopencv_highgui243 -o loadimg 

Se compilar com sucesso, criará um executável chamado loadimg.exe .

Tipo:

 loadimg 

Para executar o programa. Resultado:

O resultado do seu primeiro programa OpenCV


4. Onde ir a partir daqui?

Agora que o seu ambiente OpenCV está pronto, o que vem a seguir?

  1. Vá para o diretório samples → C:\opencv\samples\cpp .
  2. Leia e compile algum código.
  3. Escreva seu próprio código.

As instruções na resposta @bsdnoobz são realmente úteis, mas não conseguiram que o OpenCV funcionasse no meu sistema.

Aparentemente, eu precisava compilar a biblioteca para conseguir que funcionasse, e não contar com os binários pré-construídos (o que causou a queda de meus programas, provavelmente devido à incompatibilidade com o meu sistema).

Consegui fazê-lo funcionar e escrevi um guia abrangente para compilar e instalar o OpenCV e configurar o Netbeans para trabalhar com ele.

Para completar, também é fornecido abaixo.


Quando comecei a usar o OpenCV, encontrei duas grandes dificuldades:

  1. Obtendo meus programas para não falhar imediatamente.
  2. Tornar o Netbeans legal, e especialmente obter tempo para o depurador funcionar.

Eu li muitos tutoriais e artigos “como fazer”, mas nenhum foi realmente abrangente e completo. Por fim, consegui montar o ambiente; e depois de um tempo usando esta (ótima) biblioteca, eu decidi escrever este pequeno tutorial, que esperançosamente ajudará outros.

São três partes deste tutorial:

  1. Compilando e instalando o OpenCV.
  2. Configurando o Netbeans.
  3. Um programa de exemplo.

O ambiente que eu uso é : Windows 7, OpenCV 2.4.0, Netbeans 7 e MinGW 3.20 (com o compilador gcc 4.6.2).

Suposições : Você já tem o MinGW e o Netbeans instalados em seu sistema.

Compilando e instalando o OpenCV

Ao baixar o OpenCV, o arquivo na verdade já contém binários pré-compilados (bibliotecas compiladas e DLLs) na pasta ‘build’. No início, tentei usar esses binários, supondo que alguém já tivesse feito o trabalho de compilar para mim. Isso não funcionou.

Eventualmente eu percebi que tenho que compilar toda a biblioteca em meu próprio sistema para que funcione corretamente.

Felizmente, o processo de compilation é bastante fácil, graças ao CMake. CMake (significa Cross-platform Make) é uma ferramenta que gera makefiles específicos para o seu compilador e plataforma. Usaremos o CMake para configurar nossas configurações de construção e compilation, gerar um ‘makefile’ e depois compilar a biblioteca.

Os passos são:

  1. Faça o download do CMake e instale-o (no assistente de instalação, escolha adicionar CMake ao PATH do sistema).
  2. Faça o download da versão ‘release’ do OpenCV .
  3. Extraia o arquivo para um diretório de sua escolha. Eu estarei usando c:/opencv/ .
  4. Inicie o CMake GUI.
    1. Procure o diretório de origem c:/opencv/ .
    2. Escolha onde construir os binários. Eu escolhi c:/opencv/release .
      Configuração CMake - 1
    3. Clique em “Configurar”. Na canvas que se abre escolha o gerador de acordo com o seu compilador. No nosso caso é ‘MinGW Makefiles’.
      Configuração CMake - 2
    4. Aguarde que tudo seja carregado, depois você verá esta canvas:
      Configuração CMake - 3
    5. Altere as configurações, se desejar, ou deixe os padrões. Quando terminar, pressione “Configurar” novamente. Você deve ver “Configuração feita” na janela de registro, e o fundo vermelho deve desaparecer de todas as células.
      Configuração CMake - 4
    6. Neste ponto, o CMake está pronto para gerar o makefile com o qual iremos compilar o OpenCV com nosso compilador. Clique em ‘Generate’ e espere o makefile ser gerado. Quando o processo estiver concluído, você verá “Gerando feito”. A partir deste ponto, não precisaremos mais do CMake.
  5. Abra o shell MinGW (As etapas a seguir também podem ser feitas no prompt de comando do Windows).
    1. Digite o diretório c:/opencv/release/ .
    2. Digite mingw32-make e pressione enter. Isso deve iniciar o processo de compilation.
      MinGW Make
      MinGW Make - Compilação
    3. Quando a compilation é feita, os binários do OpenCV estão prontos para serem usados.
    4. Por conveniência, devemos adicionar o diretório C:/opencv/release/bin ao PATH do sistema . Isso fará com que nossos programas possam encontrar as DLLs necessárias para serem executadas.

Configurando o Netbeans

Netbeans deve ser informado onde encontrar os arquivos de header e as bibliotecas compiladas (que foram criadas na seção anterior).

Os arquivos de header são necessários por dois motivos: para compilation e para conclusão de código. As bibliotecas compiladas são necessárias para o estágio de vinculação.

Nota: Para que a debugging funcione, as DLLs do OpenCV devem estar disponíveis, e é por isso que incluímos o diretório que as contém no PATH do sistema (seção anterior, etapa 5.4).

Primeiro, você deve verificar se o Netbeans está configurado corretamente para funcionar com o MinGW. Por favor, veja a imagem abaixo e verifique se suas configurações estão corretas (considerando as mudanças de caminho de acordo com sua própria instalação). Observe também que o comando make deve ser do msys e não do Cygwin.

Configuração do NetBeans MinGW

Em seguida, para cada novo projeto criado no Netbeans, defina o caminho de inclusão (o diretório que contém os arquivos de header), o caminho das bibliotecas e as bibliotecas específicas que você pretende usar. Clique com o botão direito do mouse no nome do projeto no painel ‘projetos’ e escolha ‘propriedades’. Adicione o caminho de inclusão (modifique o caminho de acordo com sua própria instalação):

Caminho de Inclusão do Projeto Netbeans

Adicione o caminho das bibliotecas:

Caminho das Bibliotecas Netbeans

Adicione as bibliotecas específicas que você pretende usar. Essas bibliotecas serão vinculadas dinamicamente ao seu programa no estágio de vinculação. Normalmente, você precisará da biblioteca core e de outras bibliotecas, de acordo com as necessidades específicas de seu programa.

Netbeans Incluir Bibliotecas

É isso aí, agora você está pronto para usar o OpenCV!

Resumo

Aqui estão as etapas gerais que você precisa concluir para instalar o OpenCV e usá-lo com o NetBeans:

  1. Compile o OpenCV com seu compilador.
  2. Adicione o diretório que contém as DLLs para o seu sistema PATH (no nosso caso: c: / opencv / release / bin).
  3. Adicione o diretório que contém os arquivos de header ao caminho de inclusão do seu projeto (no nosso caso: c: / opencv / build / include).
  4. Adicione o diretório que contém as bibliotecas compiladas ao caminho das bibliotecas do projeto (no nosso caso: c: / opencv / release / lib).
  5. Adicione as bibliotecas específicas que você precisa para ser vinculado ao seu projeto (por exemplo: libopencv_core240.dll.a).

Exemplo – “Hello World” com o OpenCV

Aqui está um pequeno programa de exemplo que desenha o texto “Hello World:)” em uma janela da GUI. Você pode usá-lo para verificar se sua instalação funciona corretamente. Depois de compilar e executar o programa, você deve ver a seguinte janela:

OpenCV Hello World

 #include "opencv2/opencv.hpp" #include "opencv2/highgui/highgui.hpp" using namespace cv; int main(int argc, char** argv) { //create a gui window: namedWindow("Output",1); //initialize a 120X350 matrix of black pixels: Mat output = Mat::zeros( 120, 350, CV_8UC3 ); //write text on the matrix: putText(output, "Hello World :)", cvPoint(15,70), FONT_HERSHEY_PLAIN, 3, cvScalar(0,255,0), 4); //display the image: imshow("Output", output); //wait for the user to press any key: waitKey(0); return 0; } 

Isso não está funcionando para mim. Passei alguns dias seguindo cada tutorial que encontrei na net e finalmente compilei meus próprios binários. Everyting é descrito aqui: OpenVC 2.4.5, eclipse CDT Juno, erro MinGW 0xc0000005

Depois de muitas tentativas e erros, decidi seguir este tutorial e compilar meus próprios binários, pois parece que muitas pessoas estão reclamando que binários pré-compilados NÃO estão funcionando para eles. O Eclipse CDT Juno já estava instalado.

Meu procedimento foi o seguinte:

  1. Baixe e instale o MinGW e adicione ao sistema PATH com c: / mingw / bin
  2. Faça o download do cmake em http://www.cmake.org e instale-o
  3. Baixe a versão do Windows OpenCV2.4.5
  4. Instalar / descompactar Opencv para C: \ OpenCV245PC \ (README, index.rst e CMakeLists.txt estão lá com todas as subpastas)
  5. Execute a ferramenta GUI do CMake e, em seguida,
  6. Escolha C: \ OpenCV245PC \ como fonte
  7. Escolha o destino, C: \ OpenCV245MinGW \ x86 onde construir os binários
  8. Pressione o botão Configurar, escolha MinGW Makefiles como o gerador. Existem alguns destaques em vermelho na janela, escolha as opções que você precisa.
  9. Pressione o botão Configurar novamente . A configuração está agora concluída.
  10. Pressione o botão Gerar.
  11. Saia do programa quando a geração estiver concluída.
  12. Saia do programa Cmake.
  13. Execute o modo de linha de comando (cmd.exe) e vá para o diretório de destino C: \ OpenCV245MinGW \ x86
  14. Digite “mingw32-make”. Você verá um progresso na construção de binários. Se o comando não for encontrado, você deve certificar-se de que o PATH do sistema seja adicionado com c: / mingw / bin. A construção continua de acordo com as opções escolhidas até a conclusão.
  15. No sistema Windows PATH (Meu Computador> botão Direito, clique em> Propriedades> Avançado> Variáveis ​​de Ambiente> Caminho), adicione o diretório bin do destino, C: \ OpenCV245MinGW \ x86 \ bin
  16. REINICIALIZAÇÃO DO COMPUTADOR
  17. Vá para o Eclipse CDT IDE, crie um programa C ++ usando o código OpenCV de amostra (você pode usar o código do topo deste tópico).
  18. Vá para Projeto> Propriedades> C / C ++ Build> Configurações> GCC C ++ Compiler> Inclui e adicione a pasta OpenCV de origem “C: \ OpenCV245PC \ build \ include”
  19. Vá para Projeto> Propriedades> C / C ++ Build> Configurações> MinGW C ++ Linker> Bibliotecas, e adicione às Bibliotecas (-l) UM POR UM (isso pode variar de projeto para projeto, você pode adicionar todos eles se você gosta ou alguns deles apenas os que você precisa para o seu projeto): opencv_calib3d245 opencv_contrib245 opencv_core245 opencv_features2d245 opencv_flann245 opencv_gpu245 opencv_highgui245 opencv_imgproc245 opencv_legacy245 opencv_ml245 opencv_nonfree245 opencv_objdetect245 opencv_photo245 opencv_stitching245 opencv_video245 opencv_videostab245
  20. Adicione a pasta da biblioteca OpenCV construída, “C: \ OpenCV245MinGW \ x86 \ lib” ao caminho de pesquisa da biblioteca (-L) .

Você pode usar este código para testar sua configuração:

 #include  #include  #include  #include  using namespace std; using namespace cv; int main() { Mat img = imread("c:/lenna.png", CV_LOAD_IMAGE_COLOR); namedWindow("MyWindow", CV_WINDOW_AUTOSIZE); imshow("MyWindow", img); waitKey(0); return 0; } 

Não se esqueça de colocar a imagem no C: / (ou onde você achar conveniente, apenas certifique-se de que o eclipse tenha access de leitura.

Se você instalou o opencv 2.4.2, então você precisa alterar o -lopencv_core240 para -lopencv_core242

Eu cometi o mesmo erro.

No Windows 64bits funciona:

  1. Faça o download do opencv-3.0 (beta) , MinGW (ferramenta de linha de comando);
  2. Adicione acima da respectiva pasta bin para PATH var;
  3. Crie uma pasta “release” (poderia ser qualquer nome) em;
  4. Na pasta criada, abra o terminal de prompt e execute os comandos abaixo;
  5. Copie e passe este comando

    cmake -G "MinGW Makefiles" -D CMAKE_CXX_COMPILER=mingw32-g++.exe -D WITH_IPP=OFF MAKE_MAKE_PROGRAM=mingw32-make.exe ..\

  6. Execute este comando mingw32-make

  7. Execute este comando mingw32-make install

FEITO

Como apontado por @Nenad Bulatovic, é preciso ter cuidado ao adicionar bibliotecas (19º passo). não se deve adicionar nenhum espaço à esquerda ao adicionar cada biblioteca linha por linha. caso contrário, o mingw enlouquece.