В настоящее время я разрабатываю настольное программное решение, которое использует связь в реальном времени для передачи данных от клиента на сервер с использованием сокетов в C# WPF. Клиент и сервер определяются в одном и том же приложении, но роль определяется на основе типа пользователя (ученик является клиентом, а учитель выступает в роли сервера).
Я использую Affdex 3.0 SDK для сбора данных о выражении лиц учащихся и отправки их на сервер.
Моя проблема заключается в том, что при первом запуске CameraDetector и отслеживании первого лица все работает нормально, но как только лицо теряется, а затем повторно входит в изображение для повторного отслеживания, вновь обнаруженное лицо добавляется в коллекцию вместо повторной вставки в начале и запускает key not found exception
. Я думал о том, чтобы перебрать коллекцию, пока она не найдет действительное лицо, но это не идеальное решение.
public void onImageResults(Dictionary<int, Affdex.Face> faces, Affdex.Frame image)
{
Affdex.Face face;
if (faces.Count() >= 1)
{
try
{
face = faces[0];
UpdateExpressionsDials(face);
}
catch(Exception e)
{
Console.WriteLine("face failed " + e.Message.ToString());
}
}
}
Это не удается с face failed The given key was not present in the dictionary.
A first chance exception of type 'System.Collections.Generic.KeyNotFoundException' occurred in mscorlib.dll
.
Есть ли лучший способ сделать это? Было бы разумно создать обертку вокруг Listener и убедиться, что если есть лицо, оно всегда находится в начале?
Это мой первый вопрос, поэтому, пожалуйста, дайте мне знать, если я что-то упустил из вопроса. Спасибо
Collection.First().Value
, и теперь, похоже, все работает нормально. Если у кого-то есть другие предложения, я бы приветствовал их. - person Remus.A   schedule 20.02.2016