- 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