Hello OpenCV with C++, using Visual Studio 2017 and VcPkg

In this post, I will show how to do your first steps with OpenCV quickly using Visual Studio 2017 and VcPkg.

What is OpenCV?

OpenCV (Open Source Computer Vision) is an open-source and cross-platform library mainly aimed at real-time computer vision. Originally, it was developed by Intel. It is free for use under the BSD license.

What is VcPkg?

Acquiring native libraries on Windows is a critical part of the application development process, and it used to be a nightmare.  VcPkg is a VC++ Packaging Tool that helps to get C and C++ libraries on Windows.

Getting started with VcPkg

If you want to use VcPkg (I strongly recommend it if you are planning to develop software for Windows using C++), you will need:

  1. Clone VcPkg GitHub repository;
  2. Run the VcPkg bootstrapping process
    .bootstrap-vcpkg.bat
  3. Make all installed packages available to all VS projects.
    .vcpkg integrate install

Done! Now you can get OpenCV in a very easy way.

.vcpkg install opencv

Hello, OpenCV

We are ready to create our application using OpenCV. There is no need to any configuration – we just need #include it.

#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;
}

This code starts the camera, capturing images, applying filters on it and displaying the results in three different windows.

That’s all folks.

Compartilhe este insight:

3 respostas

  1. This creates a bare-bones installation of opencv. It does not include important dll’s like FFMPEG*.dll. So you’d be unable to open video files. This method is simple and nice… but did not meet expectations. Now I have to redo everything again – the hard way. I should have just done that from the beginning.

    1. Nevermind….. visited the Microsoft site, and it seems you can add vcpkg install opencv[ffmpeg] to get the dlls….

Deixe uma resposta

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:

Eu sei que sou privilegiado, em última instância, por poder oferecer, através do meu trabalho, algo que a sociedade valoriza....
Em um post anterior, indiquei que um servidor de identidades seria uma bela alternativa para um “primeiro microsserviço”. Neste post,...
Há algum tempo, estou compartilhando recomendações práticas para construção de microsserviços com Aspnet Core.  Agora, resolvi organizar meus exemplos para...
Retomar em plenitude todas as atividades econômicas, aumentando o risco de contágio pelo novo coronavírus e, eventualmente, sacrificar uma parcela...
Recentemente, compartilhei uma excelente palestra, do Feredico Lois, colega no desenvolvimento do RavenDB, sobre padrões para alta performance com C#....
Como consultor, tenho a oportunidade de ajudar desenvolvedores, arquitetos e executivos a desenvolver soluções em TI que atendam os objetivos...