Kinect.Faceの落とし穴

顔認識のライブラリを使用して
書割の画像と合成するオモチャを作ってる際にそれは起きた

e0349767_12473936.png

あわわわわ、Eceptionが止まらない・・・
ObejctDisposedExceptionがKinect.Face.dllで起きてるから
FaceFrameReaderかFrameSource辺りで変なことしてるのかなと思い
該当のソースを見てみる

e0349767_12501209.png
うーん?別に何もおかしくないんだけどな・・・
各Disposeメソッドをコメントアウトするとエラーは消えるものの
これだと画面遷移してもインスタンスが残ったままになるのでよろしくない
ステップで追おうにもpdbを吐かないからどうにもならない

これが昨日の晩からさっきまで頭を悩ませていたけど・・・解決!

e0349767_12530787.png
どうやらFaceFrameReaderのアクティブな状態を止めないといけないらしい
IsPausedプロパティをTrueに切り替えてからDisposeを行うとエラーが出なくなった
SDKのサンプルソースだとWindowのClosingイベント時に同様のことをしているものの
FrameArrivedのイベントハンドラはそのまんま放置してるので、こういうことをしないといけないってのは明記されてない
このハマり状態から抜け出せただけで今日の仕事終わっていいんじゃないのって思うレベル

しかしMSさんよ、IsPausedを何に使うかってことぐらいどこかに書いといてくれないかねぇ・・・。

[PR]
by onigirism | 2016-01-26 13:01 | プログラミング | Comments(0)
<< 【戦いに】ディスク100%問題... Windows10所感 >>