SimpleOpenNI Nagrywanie i odtwarzanie danych śledzenia użytkowników
Jestem w stanie użyć SimpleOpenNI do pomyślnego rejestrowania i odtwarzania nagrań głębokości i rgb (plików .oni). Chciałbym także być w stanie śledzić użytkowników z nagranych plików, innymi słowy być w stanie łatwo wyodrębnić sillhouettes ludzi z obrazu głębi. Jest to łatwe do zrobienia z SimpleOpenNI, gdy jest podłączony do czujnika, dzwoniącenableUser()
wsetup()
metoda, a następnie uzyskanieuserMap()
lubuserImage()
podczas losowania połączeń. Motywacją tego jest możliwość łatwego segmentowania sillouhette osoby z tła. Używam wersji SimpleOpenNI 1.96.
Oto kod, którego używam podczas rejestrowania danych:
SimpleOpenNI context;
public void setup()
{
context = new SimpleOpenNI(this);
// recording
context.enableDepth();
context.enableRGB();
context.enableUser();
context.enableRecorder(recordPath);
// select the recording channels
context.addNodeToRecording(SimpleOpenNI.NODE_DEPTH,true);
context.addNodeToRecording(SimpleOpenNI.NODE_IMAGE,true);
context.addNodeToRecording(SimpleOpenNI.NODE_USER, true);
context.addNodeToRecording(SimpleOpenNI.NODE_PLAYER, true);
context.addNodeToRecording(SimpleOpenNI.NODE_SCENE, true);
context.addNodeToRecording(SimpleOpenNI.NODE_IR, true);
}
Oto kod, którego używam do odtwarzania danych:
SimpleOpenNI context;
String recordPath = "/path/to/test.oni";
public void setup()
{
context = new SimpleOpenNI(this,recordPath);
context.enableDepth();
context.enableRGB();
context.enableUser();
}
...
Wywołanie metodycontext.enableUser();
gdy próbuję odtworzyć dane, powoduje błądCouldn't getXN_STREAM_PROPERTY_ZERO_PLANE_DISTANCE Invalid memory access of location 0x4c rip=0x10e2c38e2
. Wiem jednak, że w celu uzyskania informacji o tym, którzy użytkownicy są śledzeni, muszę zadzwonićcontext.enableUser()
. Usunięcie tego wiersza usuwa błąd, ale nie pozwala mi uzyskać dostępu do informacji o tym, którzy użytkownicy są śledzeni.
Czy ktoś wie, czy można śledzić użytkowników z wcześniej nagranych.oni
pliki?