Показать изображение во второй теме, 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.
С какого из этих направлений лучше всего начать?