Я просто занимаюсь программированием Kinect 2 здесь, и сейчас у меня возникают некоторые проблемы с материалом HighDefinitionFace. У меня есть очень простой C# программу, которая только предполагается запустить камеру Kinect, скажи мне, что это началось, а затем выводить цвет волос субъекта, например, так:Пакеты для упаковки с .dll для Kinect 2.0
static class Program
{
static KinectSensor mySensor = null;
static HighDefinitionFaceFrame frames = null;
static HighDefinitionFaceFrameSource frameSource = null;
static HighDefinitionFaceFrameReader frameReader = null;
public static void Main()
{
mySensor = KinectSensor.GetDefault();
mySensor.Open();
System.Console.WriteLine(mySensor.IsAvailable);
frameSource = new HighDefinitionFaceFrameSource(mySensor);
frameReader = frameSource.OpenReader();
frames = frameReader.AcquireLatestFrame();
System.Console.WriteLine(frames.FaceModel.HairColor);
}
}
Все работает отлично, пока я не пытаюсь инициализировать frameSource, то он генерирует InvalidOperationException:
необработанное исключение типа «System.InvalidOperationException» произошло в Microsoft.Kinect.Face.dll
Дополнительная информация: Этот API возвратил исключение из HRESULT : 0x80070002
с двумя внутренними исключениями, ссылающимися на неуместные файлы, которые не могут быть найдены. Я думаю, что вопрос основан на следующей строке из Microsoft API reference:
Каждое приложение, которое использует Microsoft.Kinect.Face.dll должны быть упакованы с папкой NuiDatabase, который поставляется вместе с Microsoft.Kinect.Face.dll. Лицо dll гарантировано только для работы с конкретной папкой NuiDatabase, с которой она поставляется. API-интерфейсы Face предназначены для загрузки файлов базы данных из папки NuiDatabase при инициализации и будут искать папку в том же месте, что и Microsoft.Kinect.Face.dll.
Итак, мой вопрос: как я могу убедиться, что эта папка NuiDatabase доступна с .dll?
Материала Я пробовал:
-The Kinect SDK 2.0 содержит около пяти экземпляров Microsoft.Kinect.Face.dll в разных каталогах, каждый с NuiDatabase папки в том же каталоге. Все эти папки .dll и NuiDatabase выглядят одинаково. Я попытался установить каждый из этих .dll как ссылки, и все они дали тот же результат.
-Создание локального пакета NuGet, содержащего .dll и папку NuiDatabase, и добавление его в проект. Я пробовал это как с .dll, так и без него в своей собственной папке Lib. Он правильно ссылается на Microsoft.Kinect.Face и позволяет мне объявлять все необходимые типы, но он по-прежнему бросает ту же ошибку в той же строке.
Любые другие предложения или что-то еще, что может быть пропущено в моей настройке?
Это нормально для платформы построения x86 или x64, но не для «Any CPU». В таком случае $ (Platform) можно заменить x64 или x86 по мере необходимости .. –