🛠️

WindowsとVSCodeでC++版OpenCVの開発環境構築

2023/10/12に公開

WindowsでOpenCVの開発を行おうとするとVisual Studioの使用例ばかり出てきますが、使い慣れたVSCodeを使いたかったので、Visual Studioを使わずに開発できる環境を構築していきます。

環境は以下の通りです。

  • Windows 11
  • OpenCV 4.9
  • CMake 3.27

CMakeのインストール

https://github.com/Kitware/CMake/releases

cmake-{version}-windows-x86_64.msi をダウンロード & インストールしてください。

wingetを使う場合
winget install Kitware.CMake

wingetがない場合は アプリインストーラーをインストールしてください。

ビルドツールのインストール

https://visualstudio.microsoft.com/ja/downloads/#build-tools-for-visual-studio-2022

Build Tools for Visual Studio 2022 をダウンロードしてください。

wingetを使う場合
winget install Microsoft.VisualStudio.2022.BuildTools

ダウンロードしたファイルを実行するとVisual Studio Installerが起動するので、「C++によるデスクトップ開発」を選択後、右の欄から「ビルドツール用C++ ATL」をチェックしてインストールしてください。

vs installer

OpenCVのインストール

https://github.com/opencv/opencv/releases

opencv-{version}-windows.exe をダウンロードしてください。
ダウンロード後、実行するとOpenCVのインストールフォルダを選択する画面になるので、適当なパスを設定します。
ここではCドライブ直下にインストールするものとします。

インストール後、ユーザー環境変数の OpenCV_DIRC:\OpenCV\build\x64\vc16 を、 Path%OPENCV_DIR%\bin%OPENCV_DIR%\lib を追加してください。

[Environment]::SetEnvironmentVariable("OpenCV_DIR", "C:\OpenCV\build\x64\vc16", "User")
$oldPath = [Environment]::GetEnvironmentVariable("Path", "User")
$newPath = $oldPath + ";%OPENCV_DIR%\bin;%OPENCV_DIR%\lib"
[Environment]::SetEnvironmentVariable("Path", $newPath, "User")

環境変数の設定後、PowerShellを開き直し、 opencv_version と入力してバージョン情報が出てくればOKです。

ソースコードからビルドする場合は以下の記事で解説しています。

https://zenn.dev/yashikota/articles/8528ea9afcc521

OpenCVを使ってみる

これで環境は整ったのでOpenCVを使ったテストプログラムを作成します。
main.cppCMakeLists.txt の2つのプログラムを用意します。

main.cpp
#include <opencv2/opencv.hpp>

int main() {
    cv::VideoCapture cap(0);
    if (!cap.isOpened()) return -1;

    cv::Mat frame;
    while (cap.read(frame)) {
        cv::imshow("test", frame);
        const int key = cv::waitKey(1);
        if (key == 'q') break;
    }
    cv::destroyAllWindows();

    return 0;
}
WebCamを使わないプログラムの場合
main.cpp
#include <iostream>
#include <opencv2/opencv.hpp>

int main() {
    // Windows標準の壁紙を表示
    cv::Mat image = cv::imread("C:\\Windows\\Web\\Wallpaper\\Windows\\img0.jpg");
    if (image.empty()) {
        std::cout << "画像が開けません" << std::endl;
        return -1;
    }

    cv::resize(image, image, cv::Size(), 0.25, 0.25, cv::INTER_AREA);
    cv::imshow("test", image);

    cv::waitKey(0);

    return 0;
}
CMakeLists.txt
cmake_minimum_required(VERSION 3.0.0)
project(test VERSION 0.1.0 LANGUAGES CXX)

find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})

add_executable(test main.cpp)
target_link_libraries( ${PROJECT_NAME} ${OpenCV_LIBS} )

ビルドします。

cmake . -B build
cmake --build build
build\Debug\test.exe

ウィンドウが表示されれば成功です!

参考文献

https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html
https://docs.opencv.org/4.x/d3/d52/tutorial_windows_install.html#tutorial_windows_install_path
https://www.kkaneko.jp/tools/win/buildtool2022.html
https://swallow-incubate.com/archives/blog/20200508
https://sh-yoshida.hatenablog.com/entry/2017/05/27/012755
https://pystyle.info/opencv-how-to-build-opencv-on-windows

GitHubで編集を提案

Discussion