Да, возможно , но вам придется использовать потоки. Объявите глобальную переменную bool exec_circle_detection = false;
и запустите второй поток. В этой ветке позвоните sleep(10)
, чтобы подождать 10 секунд, а затем измените exec_circle_detection
на true .
В главном потоке, внутри цикла захвата фрейма, вы проверяете, установлено ли для логической переменной значение true, а в противном случае вы не будете обрабатывать фрейм. Эта часть будет выглядеть примерно так (в C):
char key = 0;
while (key != 27) // ESC
{
frame = cvQueryFrame(capture);
if (!frame)
{
fprintf( stderr, "!!! cvQueryFrame failed!\n" );
break;
}
if (exec_circle_detection)
{
// execute custom processing
}
// Display processed frame
cvShowImage("result", frame);
// Exit when user press ESC
key = cvWaitKey(10);
}
Если вы планируете обнаруживать окружность каждые 10 секунд, вам нужно будет изменить exec_circle_detection
на false после выполнения пользовательской обработки. Во вторичном потоке настройте свой код так, чтобы цикл while
менял exec_circle_detection
на true каждые 10 секунд.