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

Build opencv on windows (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 opensource tool that helps you to manage your build process. Configuration tool that manages for you some hard dependencies describe in CMakeList.txt configuration files and produces standard makefiles or in our case microsoft Visual Studio project.

The version what you are looking for is 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 perform over the following repository, https://github.com/opencv/opencv_contrib. Download the contrib modules of opencv. 

What you got 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 essembled the opencv from the source. For the 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 set as on the following picture. Additionally hit the configure button. You will be probably asked to select the compiler. I used one from 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 prepare and detect 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, complier 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 whole opencv project. The name is OpenCV.sln. Just open the project and see what is inside. 
Build opencv library in visual studio

The results under Opencv solution is 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 modules is 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 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 create console C++ project, and configure just Release configuration in x64 mode.
1)Under C/C++ General/Set Additionall include Directories as on picture. 

include opencv visual studio header files
2)In Linker-General set the Additional Library Directories as on 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

Comments

  1. 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

    ReplyDelete

Post a Comment