03. CMake Tutorial with OpenCV
03. CMake Tutorial with OpenCV
CMake with OpenCV
Prerequisites
1. How to use CMake with OpenCV?
main opencv: https://github.com/opencv/opencv sub opencv: https://github.com/opencv/opencv_contrib
1
2
3
4
5
6
rmdir /s /q C:\opencv\opencv_build
mkdir C:\opencv\opencv_build
cd /d C:\opencv\opencv
cmake --preset opencv
cmake --build C:\opencv\opencv_build --config Release
cmake --build C:\opencv\opencv_build --config Release --target INSTALL
2. Tutorial
2-1. Project Structure
1
2
3
4
5
C:\opencv\
├─ opencv // opencv main library
├─ opencv_build // for build
├─ opencv_contrib // opencv sub library
└─ opencv_install // for install
1
2
3
4
5
opencv_build = build workspace (temporary)
opencv_install = final usable OpenCV package
build = compile
install = organize + copy
After finishing install
1 2 3 4 5 6C:\opencv\opencv_install\ ├─ include └─ x64 └─ vc17 ├─ lib └─ bin
2-2. Context
Json, Name is “CMakePresets.json”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
"version": 3,
"configurePresets": [
{
"name": "opencv",
"generator": "Visual Studio 17 2022",
"binaryDir": "C:/opencv/opencv_build",
"architecture": {
"value": "x64"
},
"cacheVariables": {
"CMAKE_INSTALL_PREFIX": "C:/opencv/opencv_install",
"OPENCV_EXTRA_MODULES_PATH": "C:/opencv/opencv_contrib/modules",
"BUILD_opencv_world": "ON",
"BUILD_TESTS": "OFF",
"BUILD_PERF_TESTS": "OFF",
"BUILD_EXAMPLES": "OFF",
"BUILD_DOCS": "OFF",
"BUILD_JAVA": "OFF",
"BUILD_opencv_python2": "OFF",
"BUILD_opencv_python3": "OFF",
"OPENCV_PYTHON_SKIP_DETECTION": "ON"
}
}
]
}
CMakeLists, For build and install opencv
It already created in opencv folder files, just using
CMakeLists, For creating test real project
1
2
3
4
5
6
7
8
9
10
11
12
13
cmake_minimum_required(VERSION 3.10)
project(OpenCVTest)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(OpenCV_DIR "C:/opencv/opencv_install/x64/vc17/lib")
find_package(OpenCV REQUIRED)
add_executable(OpenCVTest main.cpp)
target_link_libraries(OpenCVTest PRIVATE ${OpenCV_LIBS})
Main
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
cv::Mat img = cv::Mat::zeros(300, 500, CV_8UC3);
cv::putText(
img,
"OpenCV Install OK",
cv::Point(40, 150),
cv::FONT_HERSHEY_SIMPLEX,
1.0,
cv::Scalar(0, 255, 0),
2
);
cv::imshow("Test", img);
cv::waitKey(0);
return 0;
}
2-3. Context Detail
1. set(CMAKE_CXX_STANDARD 17)
- the compiler to use C++17
2. set(CMAKE_CXX_STANDARD_REQUIRED ON)
Enforces strict requirement
- OFF → compiler may downgrade (e.g., C++14)
- ON → fails if C++17 is not supported
3. set(OpenCV_DIR "C:/opencv/opencv_install/x64/vc17/lib")
- Look here to find OpenCV
4. find_package(OpenCV REQUIRED)
- Loads OpenCV into CMake
- find OpenCVConfig.cmake → Create OpenCV_LIBS etc..
5. target_link_libraries(OpenCVTest PRIVATE ${OpenCV_LIBS})
- Links OpenCV libraries to your executable
2-4. Set Environment
Add to PATH:
1
C:\opencv\opencv_install\x64\vc17\bin
2-5. Link and Start project
1
2
3
4
C:\Users\...\Desktop\CMakeTest\Project\
├─ build
├─ CMakeLists.txt
└─ main.cpp
1
2
3
4
cd /d "C:\Users\...\Desktop\CMakeTest\Project03"
cmake -S . -B build -G "Visual Studio 17 2022" -A x64
cmake --build build --config Release
1
build\Release\OpenCVTest.exe
This post is licensed under CC BY 4.0 by the author.