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.
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.
CMAKE - https://cmake.org/download/
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.msi. Install 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
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.
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.
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.
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.
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 |
oc34b/install/include folder contains header files.
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.
1)Under C/C++ General/Set Additional include Directories as in the picture.
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?
Muchas gracias!!!!
Thanks share if you like it :)
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