- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm trying to integrate the Gaze Tracking module into an existing application and am having some problems that are puzzling me. Anything I do to initialize the gaze tracking and then read from the F200 eventually throws an error "Exception thrown at 0x09026AAB (libpxcface_idc.dll) in rsEyeTrack_debug.exe: 0xC0000005: Access violation reading location 0x00000004.". I've read through the example application but seem to missing a crucial aspect of it somewhere. I've stripped my application down to the following:
void RSDevice::threadedFunction()
{
while (isThreadRunning())
{
lock();
if (doInit == true)
{
mSenseMgr = PXCSenseManager::CreateInstance();
if (mSenseMgr != NULL)
{
cout << " OK so far " << endl;
}
mSenseMgr->EnableFace();
if (mSenseMgr->Init() < PXC_STATUS_NO_ERROR) {
cout << " can't init mSenseMgr " << endl;
}
mSenseMgr->QueryCaptureManager()->SetRealtime(true);
mFaceTracker = mSenseMgr->QueryFace();
if (mFaceTracker == NULL)
{
assert(mFaceTracker);
}
PXCFaceConfiguration* fconfig = mFaceTracker->CreateActiveConfiguration();
if (fconfig == NULL)
{
assert(fconfig);
}
PXCFaceConfiguration::TrackingModeType trackingMode = fconfig->GetTrackingMode();
if (trackingMode == PXCFaceConfiguration::FACE_MODE_COLOR_PLUS_DEPTH)
{
PXCCapture::Device::StreamProfileSet profiles = {};
mSenseMgr->QueryCaptureManager()->QueryDevice()->QueryStreamProfileSet(&profiles);
}
mNeedGazeCalibration = true;
if (mSenseMgr)
{
if (mSenseMgr->EnableFace() >= PXC_STATUS_NO_ERROR)
{
mFaceTracker = mSenseMgr->QueryFace();
if (mFaceTracker)
{
fconfig = mFaceTracker->CreateActiveConfiguration();
fconfig->SetTrackingMode(PXCFaceConfiguration::TrackingModeType::FACE_MODE_COLOR_PLUS_DEPTH);
fconfig->detection.isEnabled = true;
fconfig->landmarks.isEnabled = true;
fconfig->pose.isEnabled = true;
fconfig->EnableAllAlerts();
//config->SubscribeAlert(&alertHandler);
fconfig->ApplyChanges();
fconfig->QueryGaze()->isEnabled = true;
int dominantEye = 0;
PXCFaceData::GazeCalibData::DominantEye eye = (PXCFaceData::GazeCalibData::DominantEye)(dominantEye - 1);
fconfig->QueryGaze()->SetDominantEye(eye);
fconfig->ApplyChanges();
fconfig->Release();
mFaceData = mFaceTracker->CreateOutput();
mShouldGetGaze = true;
cout << " have gaze, things are not too bad " << endl;
}
else
{
cout << " no gaze, things are bad " << endl;
mShouldGetGaze = false;
}
}
else
{
cout << " no mSenseMgr->EnableFace(), things are bad " << endl;
}
}
doInit = false;
}
else
{
// just doing this to see if we can read the camera, but it crashes
pxcStatus cStatus = mSenseMgr->AcquireFrame(true);
if (cStatus < PXC_STATUS_NO_ERROR) {
cout << " mSenseMgr->AcquireFrame() error " << endl;
}
mSenseMgr->ReleaseFrame();
}
unlock();
sleep(30);
}
}
I've pared it down so that nothing else is happening, no drawing, no other device access, just this single method which is essentially taken from the FF_EyeTracking_2015 example application. Is there something egregious in here? I can't initialize gaze tracking without tanking the application, not sure what I've missed.
Link Copied
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page