ユーザビリティの高い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;
}
(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}
以上