前回は「OpenCV」+「Python」でArUcoマーカを生成・認識する手順について解説しましたので、今回は「OpenCV」+「C++」での手順を解説します。
1. 使用した環境
・Ubuntu 18.04 LTS
・OpenCV 4.5.5
・cmake 3.10.2
2. 必要なパッケージのインストール
以下のコマンドを実行し、必要なパッケージのインストールを行います。
3. OpenCVと拡張モジュール群のダウンロード
3.1. OpenCVのダウンロード
以下のサイトにアクセスするとバージョンごとのOpenCVライブラリが表示されるので、最新版のOpenCVの「Sources」をクリックしダウンロードします。
OpenCV:https://opencv.org/releases/

3.2. 拡張モジュール群のダウンロード
OpenCVの拡張モジュール群をダウンロードします。以下のサイトの「Switch branches/tags」からOpenCVと同様のバージョンを選択します。「Code」→「Download ZIP」からダウンロードします。
opencv_contrib:https://github.com/opencv/opencv_contrib


3.3. ダウンロードファイルの解凍
ダウンロードした「opencv-x.x.x.zip」、「opencv_contrib-x.x.x.zip」を解凍します。
※ x.x.xは、ダウンロードするバージョンにより異なります。
4. OpenCVと拡張モジュール群のインストール
以下のコマンドを実行しOpenCVと拡張モジュールのインストールを行います。
※ x.x.xには、ダウンロードしたOpenCVのバージョンを指定してください。
5. ArUcoマーカの生成
5.1. ArUcoマーカ生成プログラムの作成
以下のArUcoマーカ自動生成プログラムをコピーし、「arMarkerGenerator.cpp」を保存します。
本プログラムで生成できるArUcoマーカの種類は、20行目の「cv::aruco::DICT_4X4_50」で指定しています。
これは、「DICT_ビット数_ID数」となっており、ビット数は縦横のビット数を指し、ID数は生成できるマーカの数を指しています。
今回は、「aruco.DICT_4X4_50」なので、縦横が4ビットで、生成できるマーカの数が0~49の計50個となります。
5.2. CMakeLists.txtの作成
以下のCMakeListsの内容をコピーし、「CMakeLists.txt」を保存します。
5.3. ArUcoマーカ生成プログラムのビルド・実行
以下のコマンドを実行し、ビルド・実行を行います。プログラムを実行すると「build」ディレクトリにArUcoマーカが生成されます。

図 1. 自動生成したArUcoマーカ
6. ArUcoマーカの検出
6.1. ArUcoマーカ検出プログラムの作成
以下のArUcoマーカ検出プログラムをコピーし、「arMarkerRecognizer.cpp」を保存します。
6.2. CMakeLists.txtの追加
項番5.2で作成した「CMakeLists.txt」に以下の10、15~16行目を追加します。
6.3. ArUcoマーカ検出プログラムのビルド・実行
以下のコマンドを実行し、ビルド・実行を行います。プログラムを実行すると「build」ディレクトリにArUcoマーカ検出結果の画像が生成されます。

図 2. 検出したArUcoマーカ
いかがだったでしょうか。C++でARマーカの生成・検出を行いたい方などのお役に立てれば幸いです。