I was trying to update SharpSenses and Facial recognition wasn't working. Then I find out this information on the webpage:
"Note: in PXCFaceConfiguration, the following APIs are not yet implemented:RecognitionConfiguration CreateStorage(), SetStorageDesc(), UseStorage() and DeleteStorage()"
Really? How can you release a broken SDK like this?
What's the alternative for saving faces so we can use the information later?
Please, either you remove the API from the wrappers too or don't remove it at all. And don't forget to update the documentation accordingly. Leaving it like this will only generate hours of useless debugging for many developers out there.
How can we developers continue to develop applications based on RealSense when you keep removing features like this? The Emotion detection removal was already bad enough.
Sorry for confusing. Those APIs never were implemented and we will remove them in the future.
Regarding storing face recognition storage. Of course APIs were not changed and they can be done using :
RecognitionModuleData::QueryDatabaseBuffer(pxcBYTE* buffer) // query FR database buffer
RecognitionConfiguration ::SetDatabaseBuffer(pxcBYTE* buffer, pxcI32 size); // load FR database buffer
Thanks for your answer.
I'm not sure if I get it. This code was working on r7 (extracted from the sdk documentation):
var session = PXCMSession.CreateInstance(); var manager = session.CreateSenseManager(); manager.EnableFace(); PXCMFaceModule faceModule = manager.QueryFace(); PXCMFaceConfiguration moduleConfiguration = faceModule.CreateActiveConfiguration(); PXCMFaceConfiguration.RecognitionConfiguration recognition = moduleConfiguration.QueryRecognition(); recognition.Enable(); PXCMFaceConfiguration.RecognitionConfiguration.RecognitionStorageDesc desc; recognition.CreateStorage("MyDB", out desc); //throws here recognition.UseStorage("MyDB"); recognition.SetRegistrationMode(PXCMFaceConfiguration.RecognitionConfiguration.RecognitionRegistrationMode.REGISTRATION_MODE_CONTINUOUS); moduleConfiguration.ApplyChanges();
But now it throws an exception when calling CreateStorage() on r8.
How can I create the database for the first time now?
You can follow this to save or load facial recognition database. Thanks!
// rdata is a PXCMFaceData.RecognitionData instance // rcfg is a PXCMFaceConfiguration.RecognitionConfiguration instance // allocate the buffer to save the database PXCMFaceData.RecognitionModuleData rmd=rdata.QueryRecognitionModule(); Int32 nbytes=rmd.QueryDatabaseSize(); Byte buffer=new Byte[nbytes]; // retrieve the database buffer rmd.QueryDatabaseBuffer(buffer); // Save the buffer to a file. Apply industry standard encryption to protect privacy. .... // Now load the database buffer back. rcfg.SetDatabaseBuffer(buffer);
This code is on the same page where it says you should call "rcfg.CreateStorage("MyDB", out desc);" to configure face recognition. Please, remove that :)
So if I got it right we don't need (or never really needed) to call CreateStorage or UseStorage, correct?
Please, when removing things like that, use the C# attribute "[Obsolete]" on the current version of the method so we know that it's going to be removed in the next version or in the other. .
Also, there is a typo in the example:
It's written "//rdata is a PXCMFaceData.RecognitionData instance" when in fact it's a "PXCMFaceData" instance.
Once again thank you your attention to this and sorry for the "angry" first message :)
I'll try it all out tomorrow and let you know the results.
You are right. CreateStorage(), SetStorageDesc(), UseStorage() and DeleteStorage() were not implemented and will be removed from SDK APIs in future documentation. We also will fix this typo. Thanks for supporting RealSense SDK.