У меня возникли проблемы с отображением результата, возвращаемого Emotion API. Результат возвращается в виде Emotion []. Код выглядит следующим образом:Отображение проекта API-интерфейс Oxford's Emotion API в C#
private async void button2_Click(object sender, EventArgs e)
{
try
{
pictureBox2.Image = (Bitmap)pictureBox1.Image.Clone();
String s = System.Windows.Forms.Application.StartupPath + "\\" + "emotion.jpg";
pictureBox2.Image.Save(s);
string imageFilePath = s;// System.Windows.Forms.Application.StartupPath + "\\" + "testing.jpg";
Uri fileUri = new Uri(imageFilePath);
BitmapImage bitmapSource = new BitmapImage();
bitmapSource.BeginInit();
bitmapSource.CacheOption = BitmapCacheOption.None;
bitmapSource.UriSource = fileUri;
bitmapSource.EndInit();
// _emotionDetectionUserControl.ImageUri = fileUri;
// _emotionDetectionUserControl.Image = bitmapSource;
System.Windows.MessageBox.Show("Detecting...");
***Emotion[] emotionResult*** = await UploadAndDetectEmotions(imageFilePath);
System.Windows.MessageBox.Show("Detection Done");
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.ToString());
}
}
и мне нужно найти наиболее доминирующую эмоцию от результатов различных эмоций.
Я нашел эти определения классов в файлах примеров API Emotion, но проблема в том, что я не смог преобразовать его в словарь или List даже с встроенными командами. Я полагаю, что существует путь, не противоречащий определениям классов в файлах Microsoft.ProjectOxford.Emotion.Contract. –
Предложение Скотта довольно хорошее, но если вы уже используете клиентский SDK, он включает сериализацию Emotion [] для строки и обратно в _other_ Emotion []. Другой вариант - это что-то вроде этого: '' var top = emotions.Select (emotion => { var dict = new Словарь(); foreach (свойство var в typeof (Scores) .GetProperties()) { dict.Add (property.Name, (плавающее) property.GetValue (emotion.Scores));} возврата dict.OrderByDescending (кв => kv.Value) .ThenBy (кв => kv.Key) .First(); }); '' –
cthrash
@ScottHannen Мой проект работает, спасибо за помощь :) –