IntelRealSense / RealSenseID

Intel® RealSense™ ID SDK
https://intelrealsense.com/facial-authentication/
Apache License 2.0
98 stars 56 forks source link

Return from Standby mode #125

Open mdisg opened 3 years ago

mdisg commented 3 years ago

Recently I have played around with the standby mode using the C# Wrapper Class Authenticator. After activating the standby mode enabling the camera preview via Preview.Start returns true but no preview image is received. The callback will not be called in that case. I then tried to do an authentication right after the reconnect and after that the preview works so I think the camera is still in standby mode even after the reconnect to the device. The start result for the preview should be false in that case in my opinion. Could you also please add a way/method to wakeup the unit without starting a dummy authentication e.g. by adding a Method e.g. WakeUp()?

My initial approach was:

The code:

var serialConfig = new SerialConfig { port = "COM2" };
var authenticator = new Authenticator();
if (authenticator.Connect(serialConfig) == Status.Ok)
{
    authenticator.Standby();
    authenticator.Disconnect();
    Thread.Sleep(3000);
    if (authenticator.Connect(serialConfig) == Status.Ok)
    {
        Thread.Sleep(3000);
        var preview = new Preview(new PreviewConfig
                                      {
                                          cameraNumber = 0,
                                          previewMode = PreviewMode.MJPEG_720P,
                                          portraitMode = true
                                      });
        if (!preview.Start(PreviewImageReceived))
        {
            Console.WriteLine("Start preview failed");
        }
    }
}

The following code with call to authenticator.Authenticate(new AuthArgs()); works:

var serialConfig = new SerialConfig { port = "COM2" };
var authenticator = new Authenticator();
if (authenticator.Connect(serialConfig) == Status.Ok)
{
    authenticator.Standby();
    authenticator.Disconnect();
    Thread.Sleep(3000);
    if (authenticator.Connect(serialConfig) == Status.Ok)
    {
        Thread.Sleep(3000);
        authenticator.Authenticate(new AuthArgs());
        var preview = new Preview(new PreviewConfig
                                      {
                                          cameraNumber = 0,
                                          previewMode = PreviewMode.MJPEG_720P,
                                          portraitMode = true
                                      });
        if (!preview.Start(PreviewImageReceived))
        {
            Console.WriteLine("Start preview failed");
        }
    }
}
RealSenseSupport commented 2 years ago

Have you try cameraNumber with different value? I guess you can use cameraNumber = -1

mdisg commented 2 years ago

@RealSenseSupport no I did not because there is no documentation or information about that behavior.

RealSenseSupport commented 2 years ago

Please keep the object "preview" live. the preview will be stop outside of the inner scope. This is my sample. https://gist.github.com/mengyui/84b0b47c1909c9fc4e6815d9e62fe987