Primeiros passos com OpenCV em C++, usando Visual Studio 2017 e VcPkg

Neste post, vou compartilhar como dar os primeiros passos com OpenCV, rapidamente, usando Visual Studio 2017 e VcPkg.

O que é OpenCV?

OpenCV (Open Source Computer Vision) é uma biblioteca open-source, cross-platform, destinada a suportar o desenvolvimento de aplicações que usam visão computacional. Originalmente, foi desenvolvida pela Intel e é livre para o uso (licença BSD).

O que é VcPkg?

Obter e referenciar bibliotecas nativas em Windows é parte crítica no processo de desenvolvimento de aplicações, e costuma ser um pesadelo. VcPkg é uma ferramenta para gestão de pacotes para VC++ que ajuda a obter e usar bibliotecas C e C++ no Windows.

Primeiros passos com VcPkg

Se você deseja usar VcPkg (eu recomendo fortemente, se você quer usar C++ para desenvolver aplicações Windows), você precisará:

  1. Clonar o repositório do VcPkg no GitHub;
  2. Executar o processo de inicialização do VcPkg.
    .bootstrap-vcpkg.bat
  3. Tornar todos os pacotes instalados disponíveis para todos os projetos VS.
    .vcpkg integrate install

Feito! Agora você pode obter e usar OpenCV de forma muito fácil.

.vcpkg install opencv

Olá, OpenCV

Estamos prontos para criar nossa aplicação usando OpenCV. Não há necessidade de qualquer configuração. Basta um simples #include .


#include <opencv2/opencv.hpp>
#include <iostream>

int main()
{
	cv::namedWindow("raw", cv::WINDOW_AUTOSIZE);
	cv::namedWindow("gray", cv::WINDOW_AUTOSIZE);
	cv::namedWindow("canny", cv::WINDOW_AUTOSIZE);

	cv::VideoCapture cap;
	cap.open(0);

	if (!cap.isOpened())
	{
		std::cerr << "Couldn't open capture." << std::endl;
		return -1;
	}
	
	cv::UMat bgr_frame, gray, canny;

	for (;;) 
	{
		cap >> bgr_frame;
		if (bgr_frame.empty()) break;

		cv::imshow("raw", bgr_frame);

		cv::cvtColor(bgr_frame, gray, cv::COLOR_BGR2GRAY);
		cv::imshow("gray", gray);

		cv::Canny(gray, canny, 10, 100, 3, true);
		cv::imshow("canny", canny);

		char c = cv::waitKey(10);
		if (c == 27) break;
	}

	cap.release();
	return 0;
}

Este código inicia a câmera, captura imagens, aplica alguns filtros e mostra os resultados em três janelas diferentes.

Isso é tudo.

Compartilhe este insight:

2 respostas

  1. Há alguma forma de poder debugar em x64?
    Copiei e colei o seu código e aparecera alguns erros:
    Você esqueceu de adicionar ‘#include ‘; quando eu adiciono a biblioteca ele diz que:
    ‘cv’: um namespace com este nome não existe.
    Conferindo se eu instalei a biblioteca opencv com o VcPkg com o comando vcpkg list, ele identifica:
    opencv:x86-windows na versão 3.4.1 instalada
    Portanto, você teria alguma informação que me ajudasse a resolver este problema?

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Elemar Júnior

Sou fundador e CEO da EximiaCo e atuo como tech trusted advisor ajudando diversas empresas a gerar mais resultados através da tecnologia.

Mais insights para o seu negócio

Veja mais alguns estudos e reflexões que podem gerar alguns insights para o seu negócio:

Our goal is to fill a two-dimensional array with 1’s. using BenchmarkDotNet.Attributes; using BenchmarkDotNet.Running; namespace ToArrays { public class Program...
Would you like to learn about NoSQL? Are you looking for help to make your first steps using RavenDB? So,...
To write parallel code is not a trivial task. There are details to consider and rules to observe. Could you...
Desenvolver software profissionalmente, em um ambiente onde a finalidade é lucro, implica em ampliar ganhos e/ou reduzir custos. O resultado...
Já está disponível o registro da conversa com os meninos da Lambda3, meus amigos Giovanni Bassi e Victor Cavalcante, sobre...
Sou extremamente privilegiado por ter em minha rede de contatos gente extremamente qualificada e competente no que faz. Conversar com...
× Precisa de ajuda?