Windows11+WSL2(Fedora)に、VSCodeでOpenCVデバグ環境を構築してみた

VSCode

 ユーザビリティの高いWindowsデスクトップ環境と豊富なコマンドラインツールが利用できるLinux開発環境は、非常に魅力的です。個人使用の範囲であれば、高価なツールを購入しなくても無料で先進的な開発環境を構築できます。
 ということで、Windows11+WSL2(Fedora)に、VSCodeでOpenCVデバグ環境を構築してみました。今回はOpenCVを使って、画像処理プログラムをVSCodeで編集し、コンパイルエラー、リンクエラーを取除いて、1ステップづつ動作確認できるところを紹介します。

0.事前準備
(1)ソフトウェア構成
 ・OS:Winndows11+WSL2(Fedora)
 ・統合開発ツール:VSCode(gcc、g++、gdb)
 ・画像処理ライブラリ:OpenCV4.8.0

(2) WSL2をWindows11へインストール
 他サイトの別記事参照

(3) OpenCVをWSL(Fedora)へインストール
 以下URLの当サイトの別記事参照してください。
https://digitalkobako.com/?p=288

1.VSCodeのコンフィグレーション
(1)先ず、VSCodeの起動
 デバグするソースコードを配置するディレクトリ移動し、起動
(VSCodeを起動してから、フォルダを開くから当該ディレクトリを指定しても良い)
※WSLを利用してデバグ環境を構築する場合、「クライアントサーバー」アーキテクチャに基づいて、 
 Windows側がクライアント、WSL側がサーバーとする構成になる。

(2)VSCodeのWSLへの接続設定

①赤枠のブルー部分をクリック
②ウィンドウ上部にメニューがポップアプしたら、「WSLへの接続」または「ディストリビューションを使用してWSLへ接続」のどちらかをクリックして、WSLへ接続
③①でクリックした赤枠のブルー部分が遷移するので確認

(3)VSCodeを便利にする拡張機能のインストール

① WSL:Fedoraの表示を確認
②LOCALに、以下の拡張機能をインストール
・Japanese Language Pack(日本語環境)
・WSL
・Remote Development
③WSLに、C/C++拡張機能をインストール

※WSL 開発環境の設定についての詳細は、以下URLを参照ください。
 https://learn.microsoft.com/ja-jp/windows/wsl/tutorials/wsl-vscode#install-vs-code-and-the-wsl-extension

2.VSCodeで、CDBするためのコンフィグレーション(g++のオプション設定)
(1)サンプルソースコード&画像

#include <opencv2/opencv.hpp>

int main(){
  // sample.pngをimgに代入
  cv::Mat img = cv::imread(“sample.png”);

  // imgをカラーからグレースケールに変換してimg_grayに代入
  cv::Mat img_gray;
  cv::cvtColor(img, img_gray, cv::COLOR_BGR2GRAY);

  // グレースケール画像img_grayを表示
  cv::imshow(“img_gray”, img_gray);

  //グレースケール画像img_grayからエッジを抽出、結果をimg_cannyに格納
  cv::Mat img_canny = img;
  cv::Canny(img_gray, img_canny, 500.0, 700.0);

  // Cannyエッジ検出を適用した画像img_cannyを表示
  cv::imshow(“img_canny”, img_canny);

  // キーボード入力を待機
  cv::waitKey(0);

  return 0;
}

sample.png(画像に名前を付けて保存し、使用してください)

(2)tasks.jsonのコンフィグレーション
 ここではg++起動時のオプション”args”:[]に、以下を追加設定
 ・ “-I” :OpenCVのインクルードパスの指定
 ・ “-l” :リンクするOpenCV共有ライブラリの指定
 ・ “-g” :デバッグモード指定(これを指定しないと、CDBできない)

{
  ”tasks”: [
    {
      ”type”: “cppbuild”,
      ”label”: “C/C++: g++ アクティブなファイルのビルド”,
      ”command”: “/usr/bin/g++”,
      ”args”: [
        ”-g”,
        ”-I/usr/local/include/opencv4/”,
        ”-o/home/Fedora/test/main”,
        ”/home/Fedora/test/main.cpp”,
        ”-lopencv_core”,
        ”-lopencv_imgcodecs”,
        ”-lopencv_highgui”,
        ”-lopencv_imgproc”
      ],
      ”options”: {
      ”cwd”: “${fileDirname}”
      },
      ”problemMatcher”: [
        ”$gcc”
      ],
      ”group”: {
        ”kind”: “build”,
        ”isDefault”: true
      },
      ”detail”: “デバッガーによって生成されたタスク。”
    }
  ],
  ”version”: “2.0.0”
}

【参考】サンプルコードをCLI(g++)で、ビルドしてみる
ソースファイルのあるディレクトリに移動して、以下のコマンドを実行
g++ -I/usr/local/include/opencv4/ -omain main.cpp -lopencv_core -lopencv_imgcodecs -lopencv_highgui -lopencv_imgproc

3.VSCodeでデバッグ
(1)以下がデバッグ中の画面をサンプルです。なお、デバッグ操作は、他サイトを参照ください。

(2)ビルドした実行ファイルをそのまま実行すると、以下エラーとなる。
 これは、共有ライブラリがオープンできない(見つからない)。つまり、検索するライブラリPATHが
設定されていないのが原因

./main: error while loading shared libraries: libopencv_core.so.408: cannot open shared object file: No such file or directory

【措置】共有ライブラリのパス(/usr/local/lib64)を環境変数LD_LIBRARY_PATHに追加

$ export LD_LIBRARY_PATH=/usr/local/lib64:${LD_LIBRARY_PATH}

以上

タイトルとURLをコピーしました