[環境構築]64bit。Windowsで、OpenCV+VSCode,C++,CMakeの開発環境を構築してみた。(コンパイラはMSVC)

2024/01/15に公開

Abstract

OpenCVを、 Windows,VSCode,C++,CMakeで環境構築してみた。
OpenCVですよ。大切なので2回言いました。

↓↓↓ここがすごい参考になった。あざっす。
https://zenn.dev/yashikota/articles/3fb8a231456c32

前提

手順

1. OpenCVのビルドとインストール

  • プロジェクトフォルダ作成

    opencvlibフォルダを作成。
    $ mkdir opencvlib && cd opencvlib
    
    • opencvとopencv_contribをダウンロード
    opencvとopencv_contribをダウンロード
    $ curl -Lo opencv.zip https://github.com/opencv/opencv/archive/4.x.zip
    $ curl -Lo opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/4.x.zip
    
    • opencv.zip,opencv_contrib.zipを解凍。
    buildフォルダを作成。
    $ mkdir build && cd build
    
    • ビルドする。
    ビルド実行
    $ cmake -G "Visual Studio 17 2022" -A x64 -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib-4.x/modules -D BUILD_opencv_world=ON ../opencv-4.x
    $ "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" .\ALL_BUILD.vcxproj /p:Configuration=Release /p:Platform=x64
    $ "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\MSBuild.exe" .\INSTALL.vcxproj /p:Configuration=Release /p:Platform=x64
    
    • 環境変数に設定。(パスは自分のパスで。)
      • C:\Products\opencvlib\build\install
      • C:\Products\opencvlib\build\install\include
      • C:\Products\opencvlib\build\install\x64\vc17\bin

2. プロジェクトフォルダとソース一式を作成

  • プロジェクトフォルダ作成

    bbb1stフォルダを作成。
    mkdir C:\Products\bbb1st && cd C:\Products\bbb1st
    
    • main.cppを作成
    main.cppの中身
    #include <opencv2/opencv.hpp>
    
    int main(void) {
        // 画像の読み込み
        cv::Mat inputImage = cv::imread("../input.png");
    
        // 画像が正しく読み込まれたかを確認
        if (inputImage.empty()) {
    	std::cerr << "画像を読み込めませんでした" << std::endl;
    	return -1;
        }
    
        // 画像の処理を行う ここでは例として、画像をグレースケールに変換する
        cv::Mat grayscaleImage;
    //    cv::cvtColor(inputImage, grayscaleImage, cv::COLOR_BGR2GRAY);
    //    ↑この関数はリンクエラーになるので、コメントアウト
    
        // グレースケール画像を表示
    //    cv::imshow("Grayscale Image", grayscaleImage);
    //    ↑この関数はリンクエラーになるので、コメントアウト
    
        // キー入力待ち
        cv::waitKey(0);
    
        // ウィンドウを閉じる
        cv::destroyAllWindows();
        return 0;
    }
    
    • CMakeLists.txtを作成
    CMakeLists.txtの中身
    cmake_minimum_required(VERSION 3.5)
    project(OpenCVExample)
    
    # OpenCVのパッケージを見つける
    find_package(OpenCV REQUIRED)
    
    # #OpenCV関係のインクルードディレクトリのパスを設定
    # include_directories( ${OpenCV_INCLUDE_DIRS} )
    
    # ソースファイルを指定
    set(SOURCES main.cpp)
    
    # 実行可能ファイルをビルド
    add_executable(OpenCVExample ${SOURCES})
    
    message('----------------s')
    message(${SOURCES})
    message(${OpenCV_LIBS})
    message('----------------e')
    
    # OpenCVをリンク
    target_link_libraries(OpenCVExample ${OpenCV_LIBS})
    
    

3. VSCodeでプロジェクトフォルダを開く


VSCodeの拡張機能C/C++、CMake Toolsを入れてなければ入れておく。
      ↓

  • C/C++: Edit Configurations(JSON)を選択
    Ctrl + Shift + P -> "C/C++: Edi"まで入力と出てくる。

          ↓
    c_cpp_properties.jsonが生成される。ついでに右下にビルド/デバッグ/実行ボタンも表示される。

4. インクルードパスを追加

main.cppに戻ると、赤波線でエラーになっている。

      ↓
手順1でビルドしたパスを設定。

      ↓
赤波線が消えている。

5. 実行

ブレークポイントを設定して、カブト虫ボタンを押す。

      ↓
初回のみ下記が表示される。

      ↓
いろいろ動き出す。

      ↓
ちょっと待つと、ブレークポイントで止まる。

出来た!!

OpenCVも、CMake+VSCodeでやっとできた。
分かれば、簡単なんだけど、ハマったな~。

Discussion