2013/10/10

Unable to invoke library 'KinectBackgroundRemoval180_64.dll'. の対処法

Kinect SDK 1.8ではBackgroundRemovalBasics-WPFというサンプルが追加されました。
このサンプルでは、カメラ画像から人物を抽出し背景を削除することができます。

このサンプルをそのままカスタマイズしていけば問題は起きなかったのですが、 参考にしながら作成していると、BackgroundRemovedColorStreamのインスタンスを作成するときに、

Unable to invoke library 'KinectBackgroundRemoval180_64.dll'.

が発生しました。

原因は、参照にKinectBackgroundRemoval.dllを追加するだけでは足りず、DLL自体をプロジェクトに追加する必要がありました。

  1. 'KinectBackgroundRemoval180_32.dll'と'KinectBackgroundRemoval180_64.dll'をプロジェクトに追加する
  2. 1で追加したDLLのプロパティを開き、「出力ディレクトリにコピー」の項目に「新しい場合はコピーする(または、常にコピーする)」を選択する
以上で、エラーは解消されました。

'KinectBackgroundRemoval.dll'は、
C:\Program Files\Microsoft SDKs\Kinect\Developer Toolkit v1.8.0\Redist\Microsoft.Kinect.Toolkit.BackgroundRemoval.dll

'KinectBackgroundRemoval180_64.dll'は、
C:\Program Files\Microsoft SDKs\Kinect\Developer Toolkit v1.8.0\Redist\amd64

'KinectBackgroundRemoval180_32.dll'は、
C:\Program Files\Microsoft SDKs\Kinect\Developer Toolkit v1.8.0\Redist\x86

にあります。


余談ですが、Kinectを用いてC#で開発していたときに、Kinectを制御する部分ではないWPF周りで手こずっていました。
Xamlでデータバインディングの仕方やDependencyPropertyがいまいち要領をつかめず。。
Android開発のようにレイアウトはXMLで書いているので似ているのですが。。

そこでXamlについて書かれた本を探したのですが、Xamlでデータバインディングの仕方やDependencyPropertyなどを理解するのに下記の本が非常に分かりやすかったです。
Windowsストアアプリにも興味があったので、ちょうど良いかと思って購入しました。