WindowsでOpenCVをMinGW-w64でビルドする。2025年版

# はじめに
OpenCVの公式サイトには、プレビルドされたOpenCVのライブラリが公開されています。
[https://opencv.org/releases/](https://opencv.org/releases/)
当然、Windows版も公開されていますが、Visual Studio用のプレビルドしかありません。
おじさんのように、C++コンパイラにMinGW-w64を使っている人はABIが違うため、Visual Studio用のプレビルドを使うことができません。
MinGW-w64でOpenCVを使うには、自分でOpenCVのライブラリをビルドする必要があるので、今回はMinGW-w64でOpenCV4.10のビルドに挑戦してみました。


# 準備
OpenCVをビルドする前に、MinGW-w64やcmakeのインストールが必要です。
以下のサイトを参考にMinGW-w64やcmakeをインストールします。

MinGW-w64のインストール
[https://qiita.com/yomei_o/items/2e706a5fa3ac5ffc3a50](https://qiita.com/yomei_o/items/2e706a5fa3ac5ffc3a50)

cmakeのインストール
[https://qiita.com/matskeng/items/c466c4751e1352f97ce6](https://qiita.com/matskeng/items/c466c4751e1352f97ce6
)


# ダウンロード

OpenCVの公式GitHubから執筆時点で最新のバージョンである、opencv-4.10.0.zipをダウンロードします。
[https://github.com/opencv/opencv/tree/4.10.0](https://github.com/opencv/opencv/tree/4.10.0)

![r001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914335/4c251fb0-f5a4-2b64-3b72-6ae028bd14bc.png)


ダウンロードが終わったら、opencv-4.10.0.zipを任意のフォルダに解凍します。
今回は例として、opencv-4.10.0.zipを「C:\prog」で解凍し、「C:\prog\opencv-4.10.0」ができました。

# ビルド

LinuxやMACであればshellで以下のコマンドを入力すればOpenCVがビルドできます。

```
cd opencv-4.10.0
mkdir build
cd build
cmake ..
make
sudo make install
```

今回は、MinGW-w64を使ってビルドを行うので一工夫が必要です。
工夫と言ってもcmakeを使ったクロスコンパイルの一般的な方法と同じです。

コマンドオプションに「-G」と「-DCMAKE_CXX_COMPILER」と「-DCMAKE_C_COMPILER」を付け、cmakeにコンパイラとmakeの方式を指定するだけです。

コマンドプロンプトで以下のコマンド実行します。
```
cd opencv-4.10.0
mkdir build
cd build
cmake -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -G "MinGW Makefiles" ..
make
make install
```

このような感じでMinGW-w64を使ってOpenCVをビルドすることができます。

![r002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3914335/b8d819f1-b0ed-5059-12b1-dbb1055e428a.png)

しばらくするとMinGW-w64用のOpenCVがビルドされます。

本来、ここで終了なのですが、Windowsだと次に説明する特殊な設定がOpenCVライブラリを使うときに必要になります。

# ライブラリ使用時の環境設定

LinuxやMACであればライブラリのビルド時に「make install」を行うと「/usr/local」などにライブラリファイルとヘッダーファイルがコピーされます。
しかしWindowsでは、ビルドしたディレクトリに「install」というフォルダが作られ、そこにライブラリファイルとヘッダーファイルがコピーされます。
今回の場合「C:\prog\opencv-4.10.0\build\install」にビルドした成果物がコピーされています。

さらにWindowsだと、ビルドしたOpenCVを使う場合、環境変数「OpenCV_DIR」にこのインストールパスを指定しないといけません。
今回の場合、コマンドプロンプトで以下のように設定します。

```
set OpenCV_DIR=C:\prog\opencv-4.10.0\build\install
```

# ビルドしたOpenCVライブラリを使う


ビルドしたOpenCVライブラリを使ってみます。
まず、「test」フォルダを作成します。

```
mkdir test
```

そして、その中に2個のファイル「CMakeLists.txt」と「hello.cpp」を作ります。

CMakeLists.txt
```
cmake_minimum_required(VERSION 3.13)
project(test_cmake CXX C)

find_package(OpenCV REQUIRED)
add_executable(test hello.cpp)

target_include_directories(test PRIVATE ${OpenCV_INCLUDE_DIRS})
target_link_libraries (test PRIVATE gdi32 comdlg32 ${OpenCV_LIBS})
```

hello.cpp
```
#include <cstdio>
#include <opencv2/opencv.hpp>

int main()
{
	cv::Mat mat;
	printf("opencv ok\n");    
    return 0;
}
```

ビルド方法はOpenCVのライブラリをビルドした時とほとんど同じです。

```
cd test
mkdir build
cd build
set OpenCV_DIR=C:\prog\opencv-4.10.0\build\install
cmake -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -G "MinGW Makefiles" ..
make
```

これでビルドが成功すれば終了です。

```
C:\prog\test>mkdir build
C:\prog\test>cd build
C:\prog\test\build>set OpenCV_DIR=C:\prog\opencv-4.10.0\build\install
C:\prog\test\build>cmake -DCMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++ -DCMAKE_C_COMPILER=x86_64-w64-mingw32-gcc -G "MinGW Makefiles" ..
-- The CXX compiler identification is GNU 14.2.0
-- The C compiler identification is GNU 14.2.0
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: C:/prog/w64devkit/bin/x86_64-w64-mingw32-g++.exe - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: C:/prog/w64devkit/bin/x86_64-w64-mingw32-gcc.exe - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- OpenCV ARCH: x64
-- OpenCV RUNTIME: mingw
-- OpenCV STATIC: OFF
-- Found OpenCV: C:/prog/opencv-4.10.0/build/install (found version "4.10.0")
-- Found OpenCV 4.10.0 in C:/prog/opencv-4.10.0/build/install/x64/mingw/lib
-- You might need to add C:/prog/opencv-4.10.0/build/install/x64/mingw/bin to your PATH to be able to run your applications.
-- Configuring done
-- Generating done
-- Build files have been written to: C:/prog/test/build

C:\prog\test\build>make
[ 50%] Building CXX object CMakeFiles/test.dir/hello.cpp.obj
[100%] Linking CXX executable test.exe
[100%] Built target test

C:\prog\test\build>test.exe
opencv ok

```

ビルドしたexeファイルを実行するときは、OpenCVのdll(ダイナミックリンクライブラリ)が必要です。
OpenCVのインストールディレクトリの「x64\mingw\bin」にdllがあるので、「libopencv_core4100.dll」などを必要に応じてexeファイルが置いてあるディレクトリにコピーします。

僕の場合「C:\prog\opencv-4.10.0\build\install\x64\mingw\bin」にdllがありました。
これを、「C:\prog\test\build」にコピーしました。

以上がWindowsでOpenCVをMinGW-w64でビルドする手順です。

# おまけ
Visual Studio Codeなどを追加でインストールし、C++の設定をすれば、WindowsでIDEを使った高度なデバッグを行うこともできます。
F9キーでブレイクポイントなども設定できるので、Visual Studio Communityと同じように使うことができます。

VSCodeでC++のcmakeビルド環境構築
https://qiita.com/JuvenileTalk9/items/fbb09d43051995bb5350