Я работаю над созданием чувствительной к эмоциям игры для Windows в Unity3D с использованием affdex SDK от Affectiva. CameraDetector находит лицо последовательно. Когда я использую FrameDetector, лицо встречается редко. Кажется, что интенсивное освещение помогает, но даже когда лицо обнаруживается, оно, похоже, обнаруживает улыбку, когда я хмуриюсь. Я получаю пиксели от WebCamTexture.GetPixels32. Пиксели располагаются слева направо и снизу вверх (как в Windows BitMaps).
public void ProcessFrame(Frame frame)
{
if (!_initialized)
{
Initialize(false);
}
byte[] bytes = new byte[frame.rgba.Length * 3];
for(int i = 0, idx=0; i < frame.rgba.Length; i++, idx+=3)
{
bytes[idx] = frame.rgba[i].b;
bytes[idx+1] = frame.rgba[i].g;
bytes[idx+2] = frame.rgba[i].r;
}
nativePlatform.ProcessFrame(bytes, frame.w, frame.h, frame.timestamp);
}
Я прочитал Документация Affectiva, но не смог найти ничего о порядке пикселей.
Класс Frame ожидает, что порядок пикселей будет слева направо, сверху вниз. Т.е. первый пиксель в массиве — это верхний левый угол изображения.
FrameDetector ожидает, что лицевые изображения будут иметь лицо вертикально на изображении. В противном случае трекер будет иметь проблемы с фиксацией на лице.
Других решений пока нет …