Мне не удается настроить FaceTracker Class на HoloLens 2. Как только я пытаюсь определить лица с помощью ProcessNextFrameAsync Method
, я получаю исключение следующего вида:
System.Runtime.InteropServices.COMException (0x80004005): Unspecified error
Это только первая часть сообщения об ошибке, если требуется дополнительная информация, я могу добавить это.
См. Здесь минимальный пример.
public async void Start()
{
var selectedGroup = await FindCameraAsync();
await StartMediaCaptureAsync(selectedGroup);
}
private async Task StartMediaCaptureAsync(MediaFrameSourceGroup sourceGroup)
{
faceTracker = await FaceTracker.CreateAsync();
this.mediaCapture = new MediaCapture();
await this.mediaCapture.InitializeAsync(settings);
this.frameProcessingTimer = ThreadPoolTimer.CreatePeriodicTimer(ProcessCurrentVideoFrameAsync, timerInterval);
}
private async Task ProcessCurrentVideoFrameAsync()
{
const BitmapPixelFormat InputPixelFormat = BitmapPixelFormat.Nv12;
var deviceController = this.mediaCapture.VideoDeviceController;
this.videoProperties = deviceController.GetMediaStreamProperties(MediaStreamType.VideoPreview) as VideoEncodingProperties;
VideoFrame videoFrame = new VideoFrame(InputPixelFormat, (int)this.videoProperties.Width (int)this.videoProperties.Height);
IList<DetectedFace> detectedFaces;
try
{
detectedFaces = await faceTracker.ProcessNextFrameAsync(videoFrame);
}
catch (Exception e)
{
System.Diagnostics.Debug.WriteLine($"Failed with Exception: {e.ToString()}");
return;
}
videoFrame.Dispose();
}
- Я получаю подходящую камеру с
MediaFrameSourceKind.Color
и MediaStreamType.VideoPreview
с FindCameraAsync()
. Что, на мой взгляд, отлично работает. - start
MediaCapture
и FaceTracker
в пределах StartMediaCaptureAsync()
- пытается обнаружить лица в
ProcessCurrentVideoFrameAsync()
Здесь это то, что я проверил, и полученная информация:
- У меня есть изображение в формате
Nv12
, PixelWidth
1504 и PixelHeigt
846 - разрешения в Unity предоставляются веб-камера, библиотека изображений и микрофон
- приложение скомпилировано с Il2 CPP
- сообщение
No capture devices are available.
появляется после запуска приложения. В других статьях упоминалось, что разрешение (веб-камера или микрофон) отсутствует, но это не так. Но, тем не менее, может быть подключен. - Я использовал Отслеживать лица в последовательности кадров и Бази c Образец отслеживания лиц в качестве ссылки
Я очень благодарен за каждый стимул и мысль.
ОБНОВЛЕНИЕ 14. Июль 2020 г.
Я только что попробовал FaceDetector
на нескольких отдельных изображениях, которые хранились локально на HoloLens 2. Это прекрасно работает.
Хотя FaceDetector
и FaceTracker
не идентичны, они очень похожи. Итак, я предполагаю, что проблема как-то связана с MediaCapture
.
Затем я попытаюсь захватить изображение с помощью MediaCapture
и обработать его с помощью FaceDetector
.
Если у кого-то есть А пока еще идей, я был бы благодарен их выслушать.