Build opencv 3.4 under windows 10 with contrib library, Git Source ,CMAKE ,Visual Studio 2017

How to build the OpenCV 3.4 library with contribution modules on windows. It is easy to make own build of opencv library. I will go step by step through this process supported by screenshot of concrete configuration in cmake and visual studio. Lets get started. I am doing my own Opencv builds almost yearly :). I did it last weak which mean: here is a tutorial. Better, easier to understand and follow than previous one.

Opencv visual studio

What we need to build opencv under windows

What is cmake? It is an open-source tool that helps you to manage your build process. Configuration tool that manages for you some hard dependencies described in CMakeList.txt configuration files and produces standard makefiles or in our case Microsoft Visual Studio project.

The version that you are looking for is a simple Latest Release or the release recommended by opencv. I will perform all the simple magic in Latest Release (3.12.4) and more concrete cmake-3.12.4-win64-x64.msiInstall CMAKE and let him do the rest. 

Download latest opencv 

Just go to OpenCV repository and hit the clone/download button of OpenCV. Hopefully, you will download from the first page the latest master branch. https://github.com/opencv/opencv.

Download opencv contrib library

The same is performed over the following repository, https://github.com/opencv/opencv_contrib. Download the contrib modules of opencv. 

What you have now are 2 zip files.

Prepare folders for opencv build 

I have prepared 3 folders in my setup for installation. The first opencv-3.4 is where the zip from opencv repository is extracted. The second one is opencv_contrib-3.4, where the opencv_contrib zip file is extracted, and finally oc34b for the result. There will be assembled the opencv from the source. For a better overview, they are all in one folder opencv34. 

opencv34-opencv-3.4
               -opencv_contrib-3.4
               -oc34b

Configure cmake for opencv

This step is easy. The above folders are set as in the following picture. Additionally, hit the configure button. You will be probably asked to select the compiler. I used one from the Visual Studio 2017 community edition. The CXX compiler identification is MSVC 19.15.26732.1 and The C compiler identification is MSVC 19.15.26732.1. Sometimes you need to set up the path to the compiler. Mine is located here. Do not copy this path and find your own. 
C:/ProgramFiles(x86)/MicrosoftVisualStudio/2017/Community/VC/Tools/MSVC/14.15.26726/bin/Hostx86/x64/cl.exe


install build own opencv

Cmake set-up for OpenCV 3.4
OK. Previous steps were configure, select the compiler, and now hit the finish button. The cmake now prepares and detects configuration for the build. Now the window of cmake looks like a huge list of checkboxes. You can change some of the configuration and some not. 

Configuration of opencv build in cmake

This configuration depends on many factors like hardware configuration, software library configuration, compiler configuration and cmake find or even perform the download of some of the available options for you. The details about cmake are out of the scope of this tutorial. More information about cmake can be found under this link.  It is not necessary to read for our purpose. Lets continue. After configure hit generate button in cmake.

Opencv Visual Studio project 

The results of cmake actions are located in oc34b folder. You are interested in configuration for the whole opencv project. The name is OpenCV.sln. Just open the project and see what is inside. 
Build opencv library in visual studio

The result under the Opencv solution is a tree that looks like this one. Yes, the options depend on the configuration that you select in CMAKE. 


Build opencv in visual studio
What you can see on the picture above. The last item in the modules is the opencv_world project. I personally prefer the build one lib and dll and lib opencv_world343.lib instead of opencv_highgui opencv_core opencv_video etc. 

Build opencv solution

There is nothing to set just hit the build solution. Everything is already prepared by cmake. 

build opencv library


This process will take some time. Hopefully, the build will end with 0. The results are mess of folders and files. There are some important ones. 

The result of opencv build solution

I build opencv process to assemble the library and the utility. I have results located unter path: oc34b/install/x64/vc15/bin. You can see the annotation utility for datasets, create samples utility, train cascade utility and dlls opencv_world343.dll library. 

opencv install directory

opencv install directory
oc34b/install/x64/vc15/lib include lib files.

opencv library directory

oc34b/install/include folder contains header files. 

include install location of opencv headers

Configure Visual Studio to run test opencv library

I created a console C++ project and configured just the Release configuration in x64 mode.
1)Under C/C++ General/Set Additional include Directories as in the picture. 

include opencv visual studio header files
2)In Linker-General set the Additional Library Directories as on the following picture. 
opencv



3) In linker-Input- Additional Dependencies set the opencv_world343.lib 
opencv lib
4) Write some code, compile and run.
#include "pch.h"
#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main()
{
    std::cout << "Hello World!\n";
Mat image;
image = imread("C:/Users/Vlada/Pictures/MIT.jpg");
namedWindow("Display window", WINDOW_AUTOSIZE);// Create a window for display.
imshow("Display window", image);                   // Show our image inside it.
waitKey(0);
}


You will probably fail to find DLL by your compiled program. Just copy opencv_world343.dll just next to your exe as on the following image. Now everything should be fine and works. Right? 
install Opencv visual studio 2017

Thanks for sharing

Next Post Previous Post
3 Comments
  • Fredy Gonzales .
    Fredy Gonzales . November 13, 2018 at 10:52 AM

    Muchas gracias!!!!

    • Vl
      Vl November 13, 2018 at 10:53 AM

      Thanks share if you like it :)

  • Unknown
    Unknown December 24, 2018 at 1:45 PM

    1.how to install opencv 4.0 step-by-step
    2. I have already vs2017 with C++ compiler, do I need to install the CMAKE ?
    is there and opencv 4.0 that don't need the cmake install ? can it damage the C++ compiler inn vs2017 ?
    3. how to install the cv::text library ? got missing on include opcv2/text.hpp

    appreciated any help

Add Comment
comment url