Windows 10でOpenCV Darknet Yolov3を使うサンプルコード
参考になる記事がこちらにあったので準備していたら、最新の環境 OpenCV 4.5 + GStreamer 1.0 1.19.3での構築で若干違っていたので記事にしておきます。
目的
Yolov3をCUDAなしの環境 Inten Core i5ノートPCで試すためサンプルコードを調べていて、良い記事がありました。
準備
- [OpenCV 4.5.5] (https://opencv.org/opencv-4-5-5/ ) ソース
- [opencv_contrib] (https://github.com/opencv/opencv_contrib ) ソース
- CMake3.18.2
- Visual Studio 2019
- GStreamer 1.0 MSVC 64-bit (VS 2019, Release CRT)
[1.18.5 runtime installer] (https://gstreamer.freedesktop.org/data/pkg/windows/1.19.3/msvc/gstreamer-1.0-msvc-x86_64-1.19.3.msi ) ,
1.18.5 development installer
私の場合、VisualStudoi 2019とCMake guiはすでにインストールしてあったので実際は以下のファイルをダウンロードしました。
上記ファイルをダウンロードしたら、Visual Studio 2019、CMake、GSStreamer(ランタイム、開発環境共に)インストールします。
GStreamerのパスを環境変数に追加
*これが必要かどうかは、不明です。記事の手順に沿って設定しました。
##O penCVソースの展開
Opencv-4.5.5.zip を展開しD:\OpenCV-4.5.5フォルダーに移動、さらに展開した opencv_contrib-4.x.zipもD:\OpenCV-4.5.5フォルダーに移動しました。
** ここで一旦、PCを再起動します。 **
CMakeでOpenCVをGStreamer付でコンパイル
CMakeでソースとビルドパスを設定します。コンパイルはx64です。
WITH_GSTREAMERをチェック
OENCV_EXTRA_MODULES_PATHパスの設定
[Generate]ボタンを押して、shファイルを生成
エラーがないこと、GStreamerが組み込まれていることを確認します。
VisualStudio でビルド
エラーへの対応
2つのエラーが発生しました。1つは、objに関するもの、1つはlnk
1> ライブラリ D:/opencv-4.5.5/build/lib/Release/opencv_videoio455.lib とオブジェクト D:/opencv-4.5.5/build/lib/Release/opencv_videoio455.exp を作成中
1>cap_gstreamer.obj : error LNK2019: 未解決の外部シンボル __imp_gst_audio_info_from_caps が関数 "public: bool __cdecl cv::GStreamerCapture::grabAudioFrame(void)" (?grabAudioFrame@GStreamerCapture@cv@@QEAA_NXZ) で参照されました
1>D:\opencv-4.5.5\build\bin\Release\opencv_videoio455.dll : fatal error LNK1120: 1 件の未解決の外部参照
CMakeに戻り、BUILD_opencv_objc_bindings_generatorのチェックを解除します。
再度[Generate]ボタンでshを生成します。
VisualStudioに戻り、更新されたプロジェクトファイルを再読み込み
Linkエラーの対応
GStreamerライブラリのgstaudio-1.0.libを追加します。追加するソリューションは、エラーを表示している opencv_videoio です。
ビルドを実行します。
今回は、エラーなく終了すると思います。
OpenCVのインストール
ビルドに成功したら、CMakeTargetsのINSTALLを選択し、ビルドを実行することでインストールが実行されます。
/Debugでも同様にビルドと、インストールを実行したら、環境の準備が完了です。
私の環境では、D:\opencv-4.5.5\build\install にインストールされました。