- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Is there any face tracking example or demo using Processing language? (there's only a hand tracking sample)
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We will provide such sample code in the future. In the meantime, you can use our Java sample code in face tracking as a reference. You can find it @C:\Program Files (x86)\Intel\RSSDK\framework\Java\face_tracking_java. Thanks!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Java face tracking demo does't work in Processing.
It seems PXCMVideoModule.DataDesc.streams.color is unavailable prom Java/Processing
import intel.rssdk.*; import java.util.*; void setup() { // Create session PXCMSession session = PXCMSession.CreateInstance(); if (session == null) { println("Failed to create a session instance"); return; } pxcmStatus sts = pxcmStatus.PXCM_STATUS_NO_ERROR; // Initialize Face Analyzer PXCMSession.ImplDesc desc = new PXCMSession.ImplDesc(); desc.subgroup = EnumSet.of(PXCMSession.ImplSubgroup.IMPL_SUBGROUP_FACE_ANALYSIS); desc.friendlyName = "Face 2D/3D Analysis (Intel)"; PXCMFaceModule faceModule = new PXCMFaceModule(0, true); sts = session.CreateImpl(desc, faceModule); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) { println("Failed to create a Face3D instance"); return; } // Create CaptureManager instance PXCMCaptureManager captureMgr = session.CreateCaptureManager(); captureMgr.FilterByDeviceInfo("RealSense", null, 0); // Retrieve the input requirements sts = pxcmStatus.PXCM_STATUS_DATA_UNAVAILABLE; PXCMFaceConfiguration faceConfig = faceModule.CreateActiveConfiguration(); faceConfig.SetTrackingMode(PXCMFaceConfiguration.TrackingModeType.FACE_MODE_COLOR); faceConfig.detection.isEnabled = true; faceConfig.landmarks.isEnabled = true; faceConfig.pose.isEnabled = true; faceConfig.ApplyChanges(); faceConfig.Update(); PXCMVideoModule videoModule = (PXCMVideoModule) faceModule.QueryInstance(PXCMVideoModule.CUID); for ( int i=0; ; i++ ) { PXCMVideoModule.DataDesc ddesc = new PXCMVideoModule.DataDesc(); sts = videoModule.QueryCaptureProfile(i, ddesc); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) { println("Failed to QueryProfile of the Face3D module."); return; } ddesc.streams.color.sizeMax.height = 480; // ERROR (unexpected token) ddesc.streams.color.sizeMax.width = 640; sts = captureMgr.RequestStreams(1, ddesc); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) continue; sts = captureMgr.LocateStreams(); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) continue; sts = videoModule.SetCaptureProfile(ddesc); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) continue; else break; } faceConfig.detection.isEnabled = true; faceConfig.landmarks.isEnabled = true; faceConfig.pose.isEnabled = true; faceConfig.ApplyChanges(); faceConfig.Update(); PXCMCapture.Sample sample = new PXCMCapture.Sample(); PXCMFaceData faceData = null; for ( int nframes=0; nframes<30000; nframes++ ) { sample.color = new PXCMImage(); PXCMSyncPoint sp0 = new PXCMSyncPoint(0, true); PXCMSyncPoint sp1 = new PXCMSyncPoint(0, true); sts = captureMgr.ReadModuleStreamsAsync(1, sample, sp0); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) { println("Failed to read images"); return; } sts = sp0.Synchronize(); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) { println("Failed to Synchronize"); return; } sts = videoModule.ProcessImageAsync(sample, sp1); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) { println ("Failed to invoke ProcessImageAsync"); return; } sts = sp1.Synchronize(); if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR)<0) { println("Failed to Synchronize"); return; } faceData = faceModule.CreateOutput(); faceData.Update(); // Read and print data for ( int fidx=0; ; fidx++ ) { PXCMFaceData.Face face = faceData.QueryFaceByIndex(fidx); if (face==null) break; PXCMFaceData.DetectionData detectData = face.QueryDetection(); if (detectData != null) { PXCMRectI32 rect = new PXCMRectI32(); boolean ret = detectData.QueryBoundingRect(rect); if (ret) { println("Detection Rectangle at frame #" + nframes); println("Top Left corner: (" + rect.x + "," + rect.y + ")" ); println("Height: " + rect.h + " Width: " + rect.w); } } else break; PXCMFaceData.PoseData poseData = face.QueryPose(); if (poseData != null) { PXCMFaceData.PoseEulerAngles pea = new PXCMFaceData.PoseEulerAngles(); poseData.QueryPoseAngles(pea); println("Pose Data at frame #" + nframes); println("(Roll, Yaw, Pitch) = (" + pea.roll + "," + pea.yaw + "," + pea.pitch + ")"); } } faceData.close(); sample.ReleaseImages(); sp0.close(); sp1.close(); } }

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