0

最近、Affectiva SDK ( http://www.affectiva.com/ ) をインストールし、カメラからの入力の分析に関するチュートリアル ( http://developer.affectiva.com/v3/android/analyze-camera/ ) に従いました。残念ながら、プロジェクトは機能していないようです。顔が検出されたときなどに、インターフェイス/コールバック関数を呼び出すFaceListener, ImageListener, ProcessStatusListener必要があることを理解しています(これは正しいですか)。

エラーは発生していませんが、これらの関数が呼び出されることはありません (そこに Console.WriteLine ステートメントを配置し、Visual Studio にブレークポイントを配置しました)。時々、一連の「Image Captured」ステートメントがコンソールに出力されますが、それがどのように、またはなぜ起こるのか、まだ再現できません。誰かが私が間違ったことを知っていますか? よろしくお願いします。


以下はこれまでの私のコードです:

App.xaml.cs

using Affdex;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Threading.Tasks;
using System.Windows;

namespace Affectiva
{

    /// <summary>
    /// Interaction logic for App.xaml
    /// </summary>
    public partial class App : Application, FaceListener, ImageListener, ProcessStatusListener
    {
        public static CameraDetector detector;
        int camId = 10;
        int camFPS = 60;

        public App(){
            detector = new CameraDetector();
            String classifierPath = "C:\\Program Files (x86)\\Affectiva\\Affdex SDK\\data";
            detector.setClassifierPath(classifierPath);

            detector.setCameraId(camId);
            detector.setCameraFPS(camFPS);

            detector.setFaceListener(this);
            detector.setImageListener(this);
            detector.setProcessStatusListener(this);

            detector.setDetectSmile(true);
            detector.setDetectJoy(true);

            detector.setDetectAllExpressions(true);
            detector.setDetectAllEmotions(true);
            detector.setDetectAllEmojis(true);
            detector.setDetectAllAppearances(true);
        }

        public void onFaceFound(float f, int i)
        {
            Console.WriteLine("Face Found!");
        }

        public void onFaceLost(float f, int i)
        {
            Console.WriteLine("Face Lost!");
        }

        public void onImageResults(Dictionary<int, Face> faces, Frame f){
            Console.WriteLine("OnImageResults - " + faces.Count);
            if(faces.Count > 0)
                Console.WriteLine(faces.First().Value.Appearance.Age);
        }

        public void onImageCapture(Frame f){
            Console.WriteLine("Image Captured " + f.getHeight());
        }

        public void onProcessingFinished()
        {
            Console.WriteLine("Processing Finished");
        }

        public void onProcessingException(AffdexException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}

MainWindow.xaml.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Windows.Threading;
using WebEye.Controls.Wpf;

namespace Affectiva
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void OnStartButtonClick(object sender, RoutedEventArgs e)
        {
            var cameraId = webCameraControl.GetVideoCaptureDevices().First();
            webCameraControl.StartCapture(cameraId);
            App.detector.start();
        }
    }
}
4

1 に答える 1