У меня есть некоторый простой код OpenCV, который выглядит примерно так:
TIMING_START(T1);
cv::cvtColor(fi.getUMat(cv::ACCESS_READ), fi_gray, CV_RGB2GRAY);
TIMING_STOP(T1);
TIMING_START(T2);
cv::threshold(fi_gray, fi_gray, 70, 255, CV_THRESH_BINARY);
TIMING_STOP(T2);
TIMING_START(T3);
cv::Canny(fi_gray, canny_output, 1, 255, 3);
TIMING_STOP(T3);
То, что я пытаюсь выполнить, работает отлично, поэтому код не является проблемой.Проблема в том, что мне нужно время, потому что я использую свой интегрированный графический процессор и OpenCV 3.3 с поддержкой OpenCL для запуска на iGPU.Это прекрасно работает для каждого звонка после первого.Я знаю, что для инициализации и компиляции кода ядра GPU требуется время, но я использую этот код в видеоприложении с акцентом на производительность в реальном времени.Таким образом, первый вызов и Имидж всегда занимают 1,5 с и явно заикают видео.Вызовы после выполняются в течение <10 мс, что совершенно нормально. </p>
Так есть ли способ переключиться на вариант с ЦП, пока код GPU компилируется, и использовать версию GPU после этого или что-то еще?Просто так у меня нет этого первого "лага".
Спасибо за предложения заранее!