OpenCV 環境構築 最短ガイド【C++/Windows・macOS・Linux】
OpenCV を C++ で使い始めるとき、最初のハードルは「環境構築」です。Python なら pip install opencv-python で終わりますが、C++ はプラットフォームごとにビルドシステムとの連携が必要で、情報も散在しています。
この記事では Windows・macOS・Linux それぞれの最短セットアップ手順を整理します。読み終えると、任意のプラットフォームで OpenCV の C++ プログラムをコンパイル・実行できる状態になります。
前提環境
| 項目 | Windows | macOS | Linux |
|---|---|---|---|
| OS | Windows 10 / 11 | macOS 13 以降 | Ubuntu 現行 LTS |
| コンパイラ | Visual Studio 2022 (MSVC) | Apple Clang(Xcode CLI Tools) | GCC 11 以降 |
| ビルドツール | CMake 3.20 以上 | CMake 3.20 以上 | CMake 3.20 以上 |
| OpenCV | 4.x 最新安定版 | 4.x 最新安定版 | 4.x 最新安定版 |
OpenCV のバージョンは本記事執筆時点(2026-08)の 4.x 系を対象としています。
Windows:ビルド済みパッケージを使う
Windows では OpenCV 公式が配布しているインストーラ(ビルド済みバイナリ)を使うのが最短です。CMake からソースビルドするより格段に手間が省けます。
手順
- OpenCV 公式 Releases ページ から Windows 向けインストーラ(
.exe)をダウンロードします。 - インストーラを実行し、展開先を決めます。ここでは
C:\opencvに展開したとします。 - システム環境変数
Pathに以下を追加します。
C:\opencv\build\x64\vc17\bin
- Visual Studio 2022 でプロジェクトを作成し、プロジェクトのプロパティを設定します。
追加のインクルードディレクトリ(C/C++ → 全般):
C:\opencv\build\include
追加のライブラリディレクトリ(リンカー → 全般):
C:\opencv\build\x64\vc17\lib
追加の依存ファイル(リンカー → 入力)—Debug 構成の例:
opencv_world4xx0d.lib
Release 構成:
opencv_world4xx0.lib
4xx の部分は実際のバージョン番号に合わせてください(例: 4100 など)。d サフィックスが Debug 用です。
- ビルドして動作確認(後述の確認コードを使用)。
macOS:Homebrew で一発インストール
macOS では Homebrew が最も簡単です。OpenCV 4 系を入れるには opencv@4 を指定します。
手順
# Homebrew 自体がまだなければ公式サイトを参照してインストール
brew install opencv@4
export PKG_CONFIG_PATH="$(brew --prefix opencv@4)/lib/pkgconfig:$PKG_CONFIG_PATH"
インストール後、pkg-config でパスが通っているか確認します。
pkg-config --modversion opencv4
バージョン番号(2026年9月時点では 4.14.0)が表示されれば成功です。export の行は ~/.zshrc に追記しておきます。
⚠️ brew install opencv(@4 なし)だと、2026年9月時点では OpenCV 5.0.0 が入ります。 5 系の pkg-config 名は opencv5 なので、pkg-config --modversion opencv4 は「見つからない」と返ります。opencv@4 は keg-only(/opt/homebrew 直下にリンクされない)なので、上のように PKG_CONFIG_PATH を通します。5 系をそのまま使う場合は、コマンドの opencv4 を opencv5 に読み替えてください。
コンパイル例:
g++ -std=c++17 main.cpp $(pkg-config --cflags --libs opencv4) -o main
Linux(Ubuntu 系):apt または ソースビルド
apt で素早くインストール
sudo apt update
sudo apt install libopencv-dev
インストールされるバージョンは Ubuntu のリポジトリに依存します。最新の 4.x が必要な場合は後述のソースビルドを選んでください。
インストール後の確認:
pkg-config --modversion opencv4
コンパイル例(macOS と同じ):
g++ -std=c++17 main.cpp $(pkg-config --cflags --libs opencv4) -o main
opencv_contrib を含むソースビルドが必要な場合
contrib(追加モジュール)が必要でも、すぐにソースビルドが要るとは限りません。Ubuntu 24.04 の apt 版(4.6.0)は aruco・face・ximgproc など多くの contrib を含み、macOS の Homebrew opencv@4 は nonfree 込みで contrib を含みます。apt 版に無いのは xfeatures2d(SURF など)です。なお SIFT は OpenCV 4.4 以降、本体で使えます。
SURF などを使いたい場合や、特定のバージョンに揃えたい場合はソースビルドします。
- OpenCV + opencv_contrib を Ubuntu でビルドする完全ガイド【C++】
- OpenCV + opencv_contrib を macOS でビルドする完全ガイド【C++/CMake】
- OpenCV + opencv_contrib を Windows でビルドする完全ガイド【C++/VS2022】
動作確認
環境が正しく構築できたか、以下のプログラムで確認します。画像の読み込みと表示、および OpenCV のビルド情報出力を行います。
⚠️ sample.jpg は実在する画像ファイルに置き換えてください。
#include <opencv2/opencv.hpp>
#include <iostream>
int main()
{
// OpenCV のビルド情報を出力(バージョン・有効モジュールの確認に便利)
std::cout << cv::getBuildInformation() << std::endl;
// 画像を読み込む(カラー)
cv::Mat img = cv::imread("sample.jpg", cv::IMREAD_COLOR);
if (img.empty()) {
std::cerr << "画像を読み込めませんでした。パスを確認してください。" << std::endl;
return 1;
}
std::cout << "画像サイズ: " << img.cols << " x " << img.rows
<< " チャンネル数: " << img.channels() << std::endl;
// 画像をウィンドウに表示
cv::imshow("確認用ウィンドウ", img);
cv::waitKey(0); // キー入力待ち
return 0;
}
実行すると ターミナルに OpenCV のビルド情報(バージョン・有効なモジュール・コンパイラ情報など)と画像の縦横サイズ・チャンネル数が表示され、ウィンドウに画像が描画されます。任意のキーを押すとウィンドウが閉じてプログラムが終了します。
出力例(ターミナル):
General configuration for OpenCV 4.x.x ...
Version control: ...
画像サイズ: 1920 x 1080 チャンネル数: 3
つまずきポイント
⚠️ Windows で Debug/Release の .lib を取り違える
Visual Studio でよく発生するのが LNK2019: 外部シンボルを解決できない エラーです。多くの場合、Debug 構成に opencv_world4xx0.lib(Release 用)を指定している、またはその逆が原因です。Debug には d サフィックス付き、Release には d なしを設定してください。ソリューション構成ごとにライブラリを切り替えるのがポイントです。
⚠️ imread が空の Mat を返す
img.empty() が true になる場合のチェックリストです。
- パスが間違っている: 作業ディレクトリ(カレントディレクトリ)は実行ファイルの場所とは異なる場合があります。絶対パスで試してください。
- 日本語・スペースを含むパス: Windows の MSVC 環境では日本語パスを含むと
cv::imreadが失敗することがあります。パスに日本語やスペースを使わない場所に画像を置くか、cv::imdecodeとstd::ifstreamの組み合わせを使う回避策があります。 - 対応していない拡張子:
.webpなど環境によってはデコーダが含まれていない場合があります。.jpgや.pngで試してください。
⚠️ pkg-config で opencv4 が見つからない
原因は主に3つです。
- macOS で
brew install opencvを入れた: 5 系が入っており、pkg-config 名はopencv5です。4 系を使うならopencv@4を入れてPKG_CONFIG_PATHを通します(上の macOS の手順)。 - ソースビルドで
opencv4.pcが作られていない: OpenCV 4 系は.pcファイルを既定で生成しません。CMake に-DOPENCV_GENERATE_PKGCONFIG=ONを付けてビルドし直します。 - インストール先が検索パスに無い: ソースビルドで
/usr/localに入れた場合は、次を~/.bashrcや~/.zshrcに追記します。
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH
apt インストールの場合は通常不要です。
まとめ
| プラットフォーム | 推奨方法 | コンパイル確認コマンド |
|---|---|---|
| Windows | 公式インストーラ + VS2022 プロパティ設定 | VS でビルド実行 |
| macOS | brew install opencv@4 + PKG_CONFIG_PATH |
pkg-config --modversion opencv4 |
| Linux | apt install libopencv-dev / ソースビルド |
pkg-config --modversion opencv4 |
環境構築が完了したら、次は実際に OpenCV の各機能を試してみましょう。例えば cv::findContours の使い方【OpenCV/C++】 では、画像から輪郭を検出する実装を C++ の完全なコードで解説しています。cv::warpAffine の使い方【OpenCV/C++】 では回転・平行移動といったアフィン変換の実装例を確認できます。
環境構築でハマったポイントや、記事の不備があればコメントで教えてください。
🛠 画像処理のプロが開発するSDK/API
本ブログを運営するスワローインキュベートは、OpenCV ベースのなりすまし判定SDK/API(C++製・OpenCV 4.10)を開発しています。顔認証システムへの組み込み実績多数。
→ 顔認証のなりすまし対策 設計チェックリスト(当ブログ)
→ なりすまし判定SDK/APIの詳細を見る
→ API仕様書・サンプルコード

