lp6m’s blog

いろいろかきます

Windows環境でOpenCV freetype2を使用する

環境

何か

WindowsOpenCVを使うには、ビルド済みライブラリをダウンロードしてプロジェクトの設定を適切に行えば良い。
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ができているはず。

cmakeインストール

Windows向けインストーラでインストール。最新版で問題ない。

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ビルド

/build/以下にOpenCV.slnが生成されている。ダブルクリックで起動。
ソリューションエクスプローラーの「CMakeLists->INSTALL」を右クリックしてビルド。VisualStudio上画面中央のDebugとReleaseを切り替えて2回ビルド。
Pythonのオプションを切ったからか、ノートPCでも15分もかからずビルドが終了した。

/build/install以下にヘッダやdllやlibが生成されているはず。
これらをqiita.comのように設定すれば、freetype2が使える。いい感じのところに配置してPATH環境変数に追加しておく。

utf8の罠

こちらのソースコードを使ってテストさせていただいたが、はじめ「あいうえお」が文字化けされて頭を抱えた。
f:id:lp6m:20210409154230p:plain
How to use OpenCV FreeType module with Visual Studio · GitHub
結果として、コンパイル時点で日本語が文字化けしているらしいので、/utf8オプションをつければよい。
/8 (ソースと実行可能文字セットを-8 に設定する UTF ) | Microsoft Docs

無事日本語をMatに描画できるようになりましたとさ。
f:id:lp6m:20210409154428p:plain