2016-10-18 8 views
1

Я только начал использовать Affectiva SDK для C#, и после нескольких прогонов я наткнулся на проблему непрерывного сбоя. Я использую обработку камеры на архитектуре x86 и .Net 4.5.1. У меня установлен VS 2013. Моя ОС - Windows 10. В моем выпуске я добавил «opencv_ffmpeg248» и «affdex-native». Код строит и работает нормально, но время от времени, во время выполнения, он выдает эти ошибки и приложение закрывается.Сбой в работе SDK от Affectiva C#

Это код, который я использую:

public class Class1 : Affdex.ImageListener 
{ 
    private Affdex.CameraDetector _detector; 

    public event EventHandler<string[]> AllValuesEvent; 

    public Class1() 
    { 
     _detector = new Affdex.CameraDetector(); 
     _detector.setDetectAllEmotions(true); 
     _detector.setDetectAllAppearances(true); 

     String classifierPath = @"C:\Program Files (x86)\Affectiva\Affdex SDK\data"; 
     _detector.setClassifierPath(classifierPath); 
     _detector.setImageListener(this); 
     _detector.start(); 
    } 

    public void StopCamera() 
    { 
     _detector.stop(); 
    } 


    public void onImageCapture(Frame frame) 
    { 

    } 

    public void onImageResults(Dictionary<int, Face> faces, Frame frame) 
    { 
     if (faces.Count > 0) 
     { 
      Face face = faces.First().Value; 

      Console.WriteLine("Age: {0} Gender: {1} Glasses: {2}", 
       face.Appearance.Age, 
       face.Appearance.Gender, 
       face.Appearance.Glasses); 

      string[] names = new string[8]; 
      string[] values = new string[8]; 

      names[0] = "Anger"; 
      names[1] = "Contempt"; 
      names[2] = "Disgust"; 
      names[3] = "Engagement"; 
      names[4] = "Fear"; 
      names[5] = "Joy"; 
      names[6] = "Sadness"; 
      names[7] = "Surprise"; 

      values[0] = face.Emotions.Anger.ToString("F2"); 
      values[1] = face.Emotions.Contempt.ToString("F2"); 
      values[2] = face.Emotions.Disgust.ToString("F2"); 
      values[3] = face.Emotions.Engagement.ToString("F2"); 
      values[4] = face.Emotions.Fear.ToString("F2"); 
      values[5] = face.Emotions.Joy.ToString("F2"); 
      values[6] = face.Emotions.Sadness.ToString("F2"); 
      values[7] = face.Emotions.Surprise.ToString("F2"); 

      RaiseAllValuesEvent(names, values); 
     } 
    } 

    private void RaiseAllValuesEvent(string[] names, string[] values) 
    { 
     if (AllValuesEvent != null) 
     { 
      AllValuesEvent(names, values); 
     } 
    } 
} 

Эти ошибки, которые появляются: enter image description here enter image description here

Каждый имеет какие-либо предложения?

спасибо.

+3

Эй, может быть, проблема в том, что вы смешиваете отладочную и выпуск DLL. Можете ли вы убедиться, что вы импортируете библиотеки DLL, соответствующие вашему профилю сборки. – ahamino

+0

Ну, похоже, ваше предложение, похоже, решило мою проблему. Я продолжу отслеживать его в течение следующих нескольких дней, чтобы узнать, не получил ли я все еще ошибку с помощью DLL-релиза и вернусь к результату. –

+0

привет, @ahamino Ваше предложение исправлено с моей проблемой. Спасибо. Я не знаю, как отметить ваш комментарий в качестве ответа. –

ответ

1

Я размещаю это здесь, чтобы иметь возможность отметить как ответ, и чтобы эта тема была закрыта.

Как было предложено @ahamino в комментарии, проблема заключалась в том, что я случайно смешал DLL-файлы в моих ссылках. Добавление только DLL-релизов исправило мою проблему.

Еще раз спасибо @ahamino.