ナノカ技術メモ

ただのエンジニア。何でも屋みたいな扱い受けてます。

OpenCV for Unityの動作をデバッグする方法

このページではOpenCVをUnityで扱うためのAsset「OpenCV for Unity」を利用した際のデバッグ方法をメモしています。
OpenCVForUnityを利用する際の手順に関しては以下をご覧ください。
madgenius.hateblo.jp
こちらはUnity5.4.1で作業しました。

Debug.Log()

自分の実装した処理を確認する時

Unityの基本のデバッグ方法ですがDebug.Log()でどこまで処理が走っているかや、データが正しいかなどを確認できます。

if (texture != null && colors != null) {
    Debug.Log("textureとcolorsが初期化されているので処理続行");
    Utils.matToTexture2D (mat, texture, colors);
} else {
    Debug.LogError("textureとcolorsが初期化されていないので処理できません!");
}

try catch

OpenCVForUnityの内部処理を確認する時

OpenCVForUnityのライブラリの中にはthrowをしている部分が多数ありますので受け取ることができます。
例えばmatToTexture2DでMatのサイズとTexture2Dのサイズが違う時などにthrowされるのでそれをcatchしたらエラーで処理を止めずにTexture2Dを作り直すなどができると思います。

try {
    Utils.matToTexture2D (mat, texture, colors);
} catch (System.ArgumentException e) {
    Debug.Log ("ArgumentExceptionが起きた!内容:" + e.Message);
} catch (System.Exception e) {
    Debug.Log ("Exceptionが起きた!内容:" + e.Message);
}

Utils.setDebugMode()

OpenCVの内部処理を確認する時

OpenCVForUnityではなく、OpenCVの内部で起きたエラーをエラーログとして表示します。引数にtrueを送るとエラーログの表示がONに、falseでOFFになります。

Utils.setDebugMode(true);
Utils.matToTexture2D (mat, texture, colors);
Utils.setDebugMode(false);