2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

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

Last updated at Posted at 2024-10-19

はじめに

OpenCVの公式サイトには、プレビルドされたOpenCVのライブラリが公開されています。
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

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

ダウンロード

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

r001.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

しばらくすると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

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?