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:

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:

No último sábado, comprei um “toca-discos”. A experiência de ouvir um LP é algo bem diferente de quase tudo que...
Já sabemos como explicitar as relações de um sistema com os demais (diagrama de contexto). Também já sabemos como explicitar...
In this post, I’m going to share with you one of the RavenDB 4 features that I like the most:...
Are you designing Microservices? So, I would like to share a fascinating slide deck that I discovered recently. That comes...
No meu cotidiano, reconheço que, por mais estranho que pareça, comprometo muito do meu tempo ouvindo música ruim até que,...
Ano passado, Mario Fusco escreveu uma série de posts questionando a forma como programadores Java estão implementando os padrões de projeto definidos...