- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello!
I have a problem with my face recognition. It should save the face to the DB I created in an external file but it won't recognize me after a restart.
I hope you can help me.
using System; using System.IO; using System.Threading; namespace Aibo { class Program { #region vars static private PXCMSenseManager sm; static private PXCMFaceConfiguration.RecognitionConfiguration rcfg; static private PXCMFaceData dface; static private PXCMFaceData.RecognitionData rd; private const string dbn = "UserDB"; private const string dbf = "database.bin"; static String userId; static String facerecon; static Boolean known; #endregion static pxcmStatus OnModuleProcessedFrame(int mid, PXCMBase module, PXCMCapture.Sample sample) { if (mid == PXCMFaceModule.CUID) { PXCMFaceModule faces = module.QueryInstance<PXCMFaceModule>(); if (dface != null) { dface.Update(); PXCMFaceData.DetectionData ddata = dface.QueryFaceByID(0).QueryDetection(); PXCMRectI32 rect; ddata.QueryBoundingRect(out rect); Int32 nfaces = dface.QueryNumberOfDetectedFaces(); for (Int32 i = 0; i < nfaces; i++) { dface.Update(); PXCMFaceData.Face face = dface.QueryFaceByIndex(i); if (face != null) { dface.Update(); rd = face.QueryRecognition(); if (rd.IsRegistered()) { userId = Convert.ToString(rd.QueryUserID()); System.Diagnostics.Debug.WriteLine("Face recognized " + userId); facerecon = "Face recognized " + userId; known = true; } else { System.Diagnostics.Debug.WriteLine("Face not recognized " + userId); facerecon = "Face not recognized " + userId; known = false; } } } } } return pxcmStatus.PXCM_STATUS_NO_ERROR; } static void Main(string[] args) { ConfigureRealSense(); } static private void ConfigureRealSense() { sm = PXCMSenseManager.CreateInstance(); sm.EnableFace(); if (sm == null) { System.Diagnostics.Debug.WriteLine("Failed to create sense manager"); } PXCMFaceModule face = sm.QueryFace(); dface = face.CreateOutput(); PXCMSenseManager.Handler handler = new PXCMSenseManager.Handler { onModuleProcessedFrame = OnModuleProcessedFrame }; PXCMFaceConfiguration cfg = face.CreateActiveConfiguration(); cfg.SetTrackingMode(PXCMFaceConfiguration.TrackingModeType.FACE_MODE_COLOR_PLUS_DEPTH); cfg.EnableAllAlerts(); rcfg = cfg.QueryRecognition(); rcfg.Enable(); rcfg.SetRegistrationMode(PXCMFaceConfiguration.RecognitionConfiguration.RecognitionRegistrationMode.REGISTRATION_MODE_CONTINUOUS); cfg.ApplyChanges(); LoadDatabaseFromFile(); sm.Init(handler); sm.StreamFrames(true); cfg.Dispose(); face.Dispose(); } static private void LoadDatabaseFromFile() { dface.Update(); if (File.Exists(dbf)) { Byte[] buffer = File.ReadAllBytes(dbf); rcfg.SetDatabaseBuffer(buffer); System.Diagnostics.Debug.WriteLine("DB loaded"); } else { System.Diagnostics.Debug.WriteLine("DB not found"); } } static private void SaveDatabaseToFile() { dface.Update(); PXCMFaceData.RecognitionModuleData rmd = dface.QueryRecognitionModule(); Int32 nBytes = rmd.QueryDatabaseSize(); Byte[] buffer = new Byte[nBytes]; rmd.QueryDatabaseBuffer(buffer); File.WriteAllBytes(dbf, buffer); System.Diagnostics.Debug.WriteLine("DB saved"); } private void DeleteDatabaseFile() { if (File.Exists(dbf)) { File.Delete(dbf); System.Diagnostics.Debug.WriteLine("DB deleted"); } else { System.Diagnostics.Debug.WriteLine("DB not found"); } } static void OnProcessExit(object sender, EventArgs e) { dface.Dispose(); sm.Dispose(); } } }
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Eric, I will look at your code and be back to you soon. Thanks for supporting RealSense SDK.
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