| |
| Original author | Mahadev Kumar |
| Compatibility | OpenCV >= 4.x |
- Note
- This tutorial was tested on Windows >= 7 using the MSYS2 UCRT64 environment.
-
The OpenCV team does not maintain MSYS/Cygwin configuration and does not regularly test it with continuous integration.
Introduction
This tutorial explains how to build OpenCV from source on Windows using the MSYS2 UCRT64 toolchain and use it inside Visual Studio Code with C++.
The build configuration uses:
- MSYS2 (UCRT64 shell)
- GCC (UCRT toolchain)
- CMake
- mingw32-make
- VS Code
This method produces native Windows binaries linked against the Universal C Runtime (UCRT).
Prerequisites
Install the following software before proceeding:
After installing MSYS2, always open the:
MSYS2 UCRT64 Terminal
- Note
- Do not use the
MSYS, MinGW64, or CLANG64 shells for this build.
Step 1: Update MSYS2
Open the MSYS2 UCRT64 terminal and update the system.
Restart the terminal if prompted.
Step 2: Install Required Packages
Install the required compiler and build tools.
pacman -S mingw-w64-ucrt-x86_64-gcc \
mingw-w64-ucrt-x86_64-cmake \
mingw-w64-ucrt-x86_64-make
Verify installation:
gcc --version
cmake --version
mingw32-make --version
- Note
- Add the following directory to your
Windows PATH:
Step 3: Clone OpenCV Source Code
Clone OpenCV and optional contrib modules.
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
Step 4: Create Build Directory
cd opencv
mkdir build
cd build
Step 5: Configure the Build with CMake
Run CMake using the MinGW Makefiles generator.
cmake -G "MinGW Makefiles" ../
- Note
- If you do not want to use opencv_contrib, remove the
OPENCV_EXTRA_MODULES_PATH option.
Step 6: Build OpenCV
Compile OpenCV.
- Note
- If the build fails due to memory limitations, reduce the job count.
Example:
Step 7: Install OpenCV
Install the compiled libraries.
After installation, OpenCV will be located in: opencv/build/install
Add the following directory to your Windows PATH:
C:\path\to\opencv\build\install\x64\mingw\bin
Step 8: Verify with a C++ Example
- Create a folder outside the OpenCV source directory. Example:
first-project
- Inside the folder create main.cpp
#include <opencv2/opencv.hpp>
#include <iostream>
{
std::cout <<
"OpenCV Version: " <<
CV_VERSION << std::endl;
return 0;
}
n-dimensional dense array class
Definition mat.hpp:957
static CV_NODISCARD_STD MatExpr zeros(int rows, int cols, int type)
Returns a zero array of the specified size and type.
#define CV_VERSION
Definition version.hpp:19
#define CV_8UC3
Definition interface.h:79
void imshow(const String &winname, InputArray mat)
Displays an image in the specified window.
int waitKey(int delay=0)
Waits for a pressed key.
int main(int argc, char *argv[])
Definition highgui_qt.cpp:3
cmake_minimum_required(VERSION 3.10)
project(OpenCVApp)
set(OpenCV_DIR "C:/path/to/opencv/build/install/lib/cmake/opencv4")
find_package(OpenCV REQUIRED)
add_executable(app main.cpp)
target_link_libraries(app ${OpenCV_LIBS})
mkdir build && cd build
cmake -G "MinGW Makefiles" ..
mingw32-make
- Note
- If everything is configured correctly, a window should appear displaying a blank image.
Using OpenCV in Visual Studio Code
Install the following extensions in VS Code:
Open your project folder in VS Code.
Configure the project using CMake.
cmake -G "MinGW Makefiles" ..
Build the project.
Run the executable.
Troubleshooting
CMake cannot find OpenCV
Ensure that OpenCV_DIR is set correctly.
Example:
set(OpenCV_DIR "C:/path/to/opencv/build/install/lib/cmake/opencv4")
mingw32-make not found
Make sure the following path is added to the Windows environment variable PATH: C:\msys64\ucrt64\bin
Build fails due to memory limits
Reduce parallel build jobs.
Conclusion
You have successfully built OpenCV from source using MSYS2 UCRT64 and verified it with a C++ project in VS Code.
This setup allows you to develop OpenCV-based C++ applications using a fully open-source toolchain on Windows.