This OpenCV tutorial is a very simple code example of GPU Cuda optical flow in OpenCV written in c++. The configuration of the project, code, and explanation are included for farneback Optical Flow method. Farneback algorithm is a dense method that is used to process all the pixels in the given image. The dense methods are slower but more accurate as all the pixels of the image are processed. In the following example, I am displaying just a few pixes based on a grid. I am not displaying all the pixes. In the opposite to dense method the sparse method like Lucas Kanade using just a selected subset of pixels. They are faster. Both methods have specific applications. Lucas-Kanade is widely used in tracking. The farneback can be used for the analysis of more complex movement in image scene and furder segmentation based on these changes. As dense methods are slightly slower, the GPU and Cuda implementation can lead to great performance improvements to calculate optical flow for all pixels o
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.
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.
CMAKE - https://cmake.org/download/
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.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 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
![]() |
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.
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.
The results under Opencv solution is 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 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.
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 |
oc34b/install/include folder contains header files.
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.
1)Under C/C++ General/Set Additionall include Directories as on 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!!!!
ReplyDeleteThanks share if you like it :)
Delete1.how to install opencv 4.0 step-by-step
ReplyDelete2. 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