OpenCV com Windows

Até agora, sempre que apresentei um projeto em OpenCV o fiz no linux.

Para aqueles que perderam as referencias dos meus projetos em OpenCV, segue uma lista bem resumida:

Porque fazer no Windows

Agora irei faze-lo no Windows usando o Visual Studio.

Isso se dá porque geralmente eu prefiro o Linux ao Windows para desenvolvimento. A escolha é pessoal, e foi um hábito adquirido, no passar dos anos, pois o Linux, em minha opinião, oferece uma oportunidade maior de crescimento profissional. No que tange aprendizado de baixo nível.

Porem sem querer entrar nas questões de plataforma, há também necessidade, vez ou outra, usar o windows para desenvolvimento.

E para ser sincero, muitas vezes me sinto desconfortável, até pela falta de prática do uso desta plataforma.

Instalando o OPENCV no Windows

Porem para chegar nesse ponto, irei apresentar alguns artigos, que devem ser necessários para este fim.

O primeiro é a instalação do OpenCV e sua respectiva configuração no ambiente windows.

Primeiramente vamos baixar o opencv no site:

https://opencv.org/
Site do OpenCV

Baixe a ultima versão desta lib.

De forma geral ao tentar instalar, ele compacta na pasta: C:\Users\marce\Downloads

Eu costumo mover ele para o raiz do D:\ , no caso, caso não use um segundo disco, faça em seu c:\

Pronto a instalação do OpenCV foi realizada.

Preparando ambiente Visual Studio

Agora vou criar uma pasta VS, dentro do meu D:\opencv\

O C precisa de duas coisas para funcionar, se tratando de bibliotecas, includes e libs.

  • Includes são os cabeçalhos das funções.
  • Libs são os binários (DLLs)

Copiando a pasta include, já marcada acima, dentro do VS.

No caminho D:\opencv\build\x64\vc16 ou equivalente, pois o build contem os arquivos pré compilados, onde no meu caso irei utilizar a plataforma win 64 bits, por isso o X64. Copiarei as pastas bin e lib da pasta, para o VS, conforme mostrado a seguir:

Agora precisamos incluir o caminho completo do bin, nas variáveis de ambiente:

Criando Hello World

Agora vamos dar inicio a criação do projeto no visual studio.

Entre no Visual Studio e crie um projeto.

Agora, selecionamos o tipo de projeto:

Como o visual studio tem muitos templates, é mais fácil pesquisar c++ na aba de pesquisa, e selecionar Projeto Vazio, conforme figura acima.

Digite o nome Hello World no Nome do projeto, conforme apresentado, e o local, indique a sua pasta de projeto. Por fim click no botão CRIAR.

Va na aba de gerenciador de Soluções, e click com botão direito no nome do projeto. Selecione NEW > Novo Item.

Mude para main.cpp e pressione adicionar.

Agora, iremos mudar o projeto, para incluir os locais que criamos no opencv.

Em PROJETO > Pagina de Propriedades, conforme figura abaixo:

Abra a aba C/C++, localize Diretórios de Inclusão Adicionais, incluindo o seguinte item:

Inclua a pasta do include.

Agora vamos adicionar a lib.

Em GERAL > Vinculador , Diretórios de Biblioteca Adicionais

Inclua o a pasta D:\opencv\VS\lib

Agora iremos mostrar qual a lib que será adicionada.

A lib que iremos usar para debug, é opencv_world480d.lib.

Para isso vamos em Propriendades de Configuração > Vinculador > Entrada > Dependências Adicionais.

Pronto agora vamos ao código.

Inclusão do fonte:

Iremos usar o fonte que apontamos no artigo anterior, com uma pequena modificação.


#include <opencv2/opencv.hpp>
#include <iostream>
#include <stdio.h>
#include <stdlib.h>

using namespace cv;
using namespace std;

int main(int, char**)
{
    Mat frame;
    //--- INITIALIZE VIDEOCAPTURE
    VideoCapture cap;
    // open the default camera using default API
    //cap.open(0);
    // OR advance usage: select any API backend
    int deviceID = 0;             // 0 = open default camera
    int apiID = cv::CAP_ANY;      // 0 = autodetect default API
    // open selected camera using selected API
    cap.open(deviceID, apiID);
    // check if we succeeded
    if (!cap.isOpened()) {
        cerr << "ERROR! Unable to open camera\n";
        return -1;
    }

    //--- GRAB AND WRITE LOOP
    cout << "Start grabbing" << endl
        << "Press any key to terminate" << endl;
    for (;;)
    {
        // wait for a new frame from camera and store it into 'frame'
        cap.read(frame);
        // check if we succeeded
        if (frame.empty()) {
            cerr << "ERROR! blank frame grabbed\n";
            break;
        }
        // show live and wait for a key with timeout long enough to show images
        imshow("Live", frame);
        if (waitKey(5) >= 0)
            break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

Salve o programa, e como de praxe para o windows, reinicie o visual studio, para validar as modificações do ambiente.

Agora é só rodar o OpenCV e pronto.

Por fim para aqueles que quiserem, segue o github:

https://github.com/marcelomaurin/opencvwin