Показать изображение во второй теме, OpenCV?

У меня есть цикл для получения изображений с высокоскоростного фрейм-граббера со скоростью 250 кадров в секунду.

/** Loop processes 250 video frames per second **/
while(1){
  AcquireFrame();
  DoProcessing();
  TakeAction();
}

В то же время я бы хотел, чтобы пользователь мог отслеживать происходящее. Пользователь должен видеть только изображения со скоростью около 30 кадров в секунду (или меньше). Как настроить второй поток, который отображает текущий кадр так часто?

Thread(){
  cvShowImage();
  Wait(30); /** Wait for 30 ms **/
}

Я использую Windows на четырехъядерном компьютере Intel с MinGW, gcc и OpenCV 1.1. Основным критерием является то, что поток отображения должен занимать как можно меньше времени от моего основного цикла обработки. Каждая миллисекунда считается.

Я пытался использоватьCreateThread() создать новую тему сcvShowImage() а такжеcvWaitKey() нопо-видимому, эти функции не являются потокобезопасными.

Я рассматриваю возможность использования OpenMP, но некоторые людисообщить о проблемах с OpenMP и OpenCV, Я также рассматриваю возможность использования DirectX DirectDraw, потому что, по-видимому, это очень быстро. но этовыглядит сложно и, очевидно, естьпроблемы с использованием Windows DLL с MinGw.

С какого из этих направлений лучше всего начать?

Ответы на вопрос(4)

Ваш ответ на вопрос