Как приостановить секундомер во время процесса распознавания лиц? - PullRequest
0 голосов
/ 13 мая 2018

Я хочу определить продолжительность времени обнаружения лица.Последовательность процессов выглядит примерно так:

  1. Обнаружено лицо -> секундомер запускается
  2. Лицо исчезает (не обнаружено) -> паузы секундомера
  3. Обнаружено лицоснова (с тем же лицом) -> секундомер возобновляется

Однако моя проблема в том, что мне удается выполнить первые два процесса, но когда секундомер возобновляется, время не начинается с предыдущеговремя паузыНапример:

  1. Секундомер запускается и работает до 5 секунд
  2. Лицо исчезает на 5 секунд и секундомер останавливается
  3. Лицо снова определяется, но секундомервозобновляется через 11 секунд, а не через 6 секунд

    for (int i = 0; i < faces.Length; i++)
    {
        var face = faces[i];
        videoFrame.Draw(face, new Bgr(255, 255, 255), 2);
        Image<Bgr, Byte> grayFrameTemp = videoFrame.GetSubRect(faces[i]);
    
        //resize image
        Image<Gray, Byte> graySubFace = grayFrame.GetSubRect(faces[i]);
        Image<Gray, Byte> graySubFaceCrop = graySubFace.Resize(100, 100, Inter.Cubic);
        Image<Bgr, Byte> frame_resize = videoFrame.Resize(100, 100, Inter.Cubic);
    
        //Start the stopwatch whenever the face is detected
        SW_Start();           
    }
    
    public static void SW_Start()
    {
        Stopwatch sW = new Stopwatch();
        sW.Start();
        //Thread.Sleep(1000); //1 second
        //sW.Stop();
    
        TimeSpan ts = sW.Elapsed;
        elapsedTime = string.Format("{0:00}:{1:00}:{2:00}.{3:00}", ts.Hours, ts.Minutes, ts.Seconds, ts.Milliseconds);
    }
    

Примечание *: Использование Thread.Sleep (1000) и sw.Stop () может решить мою проблему, но это вызывает значительное отставание в моейпрограмма.Пожалуйста, помогите

...