Windows環境でOpenCV freetype2を使用する
環境
- Windows10
- Visual Studio 2017
- OpenCV 3.4.13
何か
WindowsでOpenCVを使うには、ビルド済みライブラリをダウンロードしてプロジェクトの設定を適切に行えば良い。
qiita.com
freetype2を使って日本語を画像に表示させたいが、ビルド済みのものにはfreetype2は含まれていない。(#include
でno such file)
というわけで自前でビルドする。参考リンクの情報の寄せ集め。
Visual Studio 英語パックインストール
vcpkgに必要らしい。
kagasu.hatenablog.com
vcpkg インストール
Microsoftが作っているC++向けパッケージマネージャらしい。存在を知らなかった。
cmdかgit bashで行う
git clone https://github.com/microsoft/vcpkg cd vcpkg git checkout refs/tags/2020.11 #masterではharfbuzzのビルドに失敗した bootstrap-vcpkg.bat vcpkg install freetype vcpkg install harfbuzz
うまくいけばvcpkg\installed
以下にlibやdllができているはず。
OpenCVソースダウンロード
https://github.com/opencv/opencv/releases/tag/3.4.13
https://github.com/opencv/opencv_contrib/releases/tag/3.4.13
今回は3.4.13をダウンロード。 contrlibもダウンロードすること。
opencv_contrib/modules/freetype/CMakeLists.txt
を下記リンクの通りに書き変える。
How to use OpenCV FreeType module with Visual Studio · GitHub
CMake実行
今回はPythonで使用せずC++だけで使用するのでPythonサポートは全部切った(はず)
参考リンクではanacondaを使用しているようです:
GitHub - BabaGodPikin/Build-OpenCv-for-Python-with-Extra-Modules-Windows-10: This is a step by step guide to build OpenCV with Extra Modules for Python (Anaconda) for Windows without errors. Paticularly, I will use the freetype module in OpenCV-Contrib.
cd <your-opencv-workspace-path> mkdir build cd .. cmake -G "Visual Studio 15 2017" -B <your-opencv-workspace-path>\opencv-3.4.13\build -D BUILD_NEW_PYTHON_SUPPORT=OFF -D BUILD_PYTHON_SUPPORT=OFF -D BUILD_opencv_python3=no -D OPENCV_SKIP_PYTHON_LOADER=ON -D OPENCV_EXTRA_MODULES_PATH=<your-opencv-workspace-path>\opencv_contrib-3.4.13\modules -D OPEN_CV_FORCE_PYTHON_LIBS=yes -DCMAKE_TOOLCHAIN_FILE=<your-vcpkg-path>\scripts\buildsystems\vcpkg.cmake
うまくいけばcmakeのログで
-- freetype2: YES -- harfbuzz: YES
みたいなのが表示されているはず。
OpenCVビルド
以下にOpenCV.sln
が生成されている。ダブルクリックで起動。
ソリューションエクスプローラーの「CMakeLists->INSTALL」を右クリックしてビルド。VisualStudio上画面中央のDebugとReleaseを切り替えて2回ビルド。
Pythonのオプションを切ったからか、ノートPCでも15分もかからずビルドが終了した。
以下にヘッダやdllやlibが生成されているはず。
これらをqiita.comのように設定すれば、freetype2が使える。いい感じのところに配置してPATH環境変数に追加しておく。
utf8の罠
こちらのソースコードを使ってテストさせていただいたが、はじめ「あいうえお」が文字化けされて頭を抱えた。
How to use OpenCV FreeType module with Visual Studio · GitHub
結果として、コンパイル時点で日本語が文字化けしているらしいので、/utf8
オプションをつければよい。
/8 (ソースと実行可能文字セットを-8 に設定する UTF ) | Microsoft Docs
無事日本語をMatに描画できるようになりましたとさ。
‘