- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is it possible to track multiple properties?
For example track objects and faces at the same time?
While tracking objects I want to count how many persons are sitting in front of the computer.
I get the object tracking working, but not the face tracking.
The trackes faces are always 0.
I've tried something like this.
public void EnableTracker()
{
// Object tracking works anly with this resolution
_senseManager.captureManager.FilterByStreamProfiles(PXCMCapture.StreamType.STREAM_TYPE_COLOR, 640, 480, 30);
// Enable object tracking
_senseManager.EnableTracker();
// Enable face tracking
_senseManager.EnableFace();
PXCMTracker objectTracker = _senseManager.QueryTracker();
PXCMFaceModule faceTracker = _senseManager.QueryFace();
var handler = new PXCMSenseManager.Handler
{
onModuleProcessedFrame = OnModuleProcessedFrame
};
if (_senseManager.Init(handler) >= pxcmStatus.PXCM_STATUS_NO_ERROR)
{
pxcmStatus objectTrackingstatus = Set2DTrackFromFiles(_fileNames, objectTracker);
pxcmStatus faceTrackingStatus = ConfigureFace(faceTracker);
if ((objectTrackingstatus < pxcmStatus.PXCM_STATUS_NO_ERROR) &&
(faceTrackingStatus < pxcmStatus.PXCM_STATUS_NO_ERROR))
{
_senseManager.Close();
_senseManager.Dispose();
return;
}
_senseManager.StreamFrames(true);
}
}
private pxcmStatus OnModuleProcessedFrame(int mid, PXCMBase module, PXCMCapture.Sample sample)
{
// check if the callback is from the object tracking module.
if ((mid == PXCMTracker.CUID) && !Stop)
{
var tracker = module.QueryInstance<PXCMTracker>();
//..
}
else if ((mid == PXCMFaceModule.CUID) && !Stop)
{
PXCMFaceModule face = (PXCMFaceModule)module.QueryInstance(PXCMFaceModule.CUID);
PXCMFaceData fdata = face.CreateOutput();
Int32 nfaces = fdata.QueryNumberOfDetectedFaces();
//Always = 0
}
// return NO_ERROR to continue, or any error to abort.
return pxcmStatus.PXCM_STATUS_NO_ERROR;
}
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Dirk R. wrote:
I've found the solution. It's working now.
I have to add one line *fdata.Update();*
public void EnableTracker() { // Object tracking works anly with this resolution _senseManager.captureManager.FilterByStreamProfiles(PXCMCapture.StreamType.STREAM_TYPE_COLOR, 640, 480, 30); // Enable object tracking _senseManager.EnableTracker(); // Enable face tracking _senseManager.EnableFace(); PXCMTracker objectTracker = _senseManager.QueryTracker(); PXCMFaceModule faceTracker = _senseManager.QueryFace(); var handler = new PXCMSenseManager.Handler { onModuleProcessedFrame = OnModuleProcessedFrame }; if (_senseManager.Init(handler) >= pxcmStatus.PXCM_STATUS_NO_ERROR) { pxcmStatus objectTrackingstatus = Set2DTrackFromFiles(_fileNames, objectTracker); pxcmStatus faceTrackingStatus = ConfigureFace(faceTracker); if ((objectTrackingstatus < pxcmStatus.PXCM_STATUS_NO_ERROR) && (faceTrackingStatus < pxcmStatus.PXCM_STATUS_NO_ERROR)) { _senseManager.Close(); _senseManager.Dispose(); return; } _senseManager.StreamFrames(true); } } private pxcmStatus OnModuleProcessedFrame(int mid, PXCMBase module, PXCMCapture.Sample sample) { // check if the callback is from the object tracking module. if ((mid == PXCMTracker.CUID) && !Stop) { var tracker = module.QueryInstance<PXCMTracker>(); //.. } else if ((mid == PXCMFaceModule.CUID) && !Stop) { PXCMFaceModule face = (PXCMFaceModule)module.QueryInstance(PXCMFaceModule.CUID); PXCMFaceData fdata = face.CreateOutput(); fdata.Update(); Int32 nfaces = fdata.QueryNumberOfDetectedFaces(); //Always = 0 } // return NO_ERROR to continue, or any error to abort. return pxcmStatus.PXCM_STATUS_NO_ERROR; }
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page