Wyświetl obraz w drugim wątku, OpenCV?

Mam pętlę do robienia zdjęć z szybkiego framegrabbbera przy 250 fps.

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

Jednocześnie chciałbym, aby użytkownik mógł monitorować, co się dzieje. Użytkownik musi tylko zobaczyć obrazy z szybkością około 30 fps (lub mniej). Jak skonfigurować drugi wątek, który co jakiś czas wyświetla bieżącą ramkę?

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

Jestem na Windowsie na czterordzeniowym komputerze Intel z wykorzystaniem MinGW, gcc i OpenCV 1.1. Głównym kryterium jest to, że wątek wyświetlania musi zająć jak najmniej czasu od mojej głównej pętli przetwarzania. Liczy się każda milisekunda.

Próbowałem użyćCreateThread() aby utworzyć nowy wątek za pomocącvShowImage() icvWaitKey() alenajwyraźniej funkcje te nie są bezpieczne dla wątków.

Rozważam użycie OpenMP, ale niektórzy ludziezgłaszaj problemy z OpenMP i OpenCV. Rozważam również próbę użycia DirectX DirectDraw, ponieważ najwyraźniej jest bardzo szybki. ale towygląda skomplikowanie i ewidentnie sąproblemy z użyciem bibliotek Windows z MinGw.

Która z tych dróg byłaby najlepszym miejscem do rozpoczęcia?

questionAnswers(4)

yourAnswerToTheQuestion