[Unity]OpenCVSharpでArUcoを用いてARマーカ検出を行う

OpenCVSharpはOpenCVをC#で利用するためのラッパーです.なので,OpenCVにある機能はだいたい使えます.ただマイナーなのか意外と情報が少ないのが難点です. ArUcoとは画像や映像の中からARマーカの検出・位置推定ができるライブラリです. 今回はこのライブラリをC#(Unity)で使用する方法を紹介します

開発環境

  • Unity 2018.2.6f1
    • Scripting Runtime Version* .NET 4.x.Equivalent
      • .NET 3.5でも動くはず推奨です
    • Api Compatibility Level* .NET Standard 2.0
  • OpenCVSharp3 4.0.0
  • Windows10 Home (64bit)

準備

  • このサイトを参考にしてArUco用のマーカを用意してください
    • http://pongsuke.hatenadiary.jp/entry/2017/06/09/122312
    • 僕は4X4_50で0~4番を作成し,印刷しました

マーカ検出

  • CvAruco.DetectMarkers
    • この1行だけで,フレーム内から指定したARマーカ辞書と一致するマーカを検出します.
  • CvAruco.DrawDetectedMarkers
    • この行で,検出されたマーカのIDと座標,輪郭の描画を行います.ちゃんと検出されているかを視覚的に確認するメソッドです.
  • ソースコード
    • 以下のプログラムをUnity上の適当なオブジェクトにアタッチしてください.

描画

このままでは内部的に値を取得しただけなので,視覚的にわかりやすいようにcam_frame(カメラの映像)をテクスチャとしてオブジェクトに反映させます.  

ノートパソコンのインカメで撮影したので,少し不自然な角度ですがしっかりマーカの検出ができていることが確認できます.  

コメントを残す

メールアドレスが公開されることはありません。