Интеграция OpenCV с более крупными программами

Может ли кто-нибудь порекомендовать практическое руководство или дать краткий обзор того, что связано с интеграцией OpenCV с более крупными программами на основе графического интерфейса пользователя? Каковы популярные способы сделать это?

В частности, обработка видео с помощью OpenCV при захвате / предварительном просмотре без с использованием HighGUI кажется особенно загадочной. Я надеюсь, что кто-нибудь сможет развенчать это.

Моя конкретная конфигурация - это либо Juce, либо Qt, в зависимости от того, что можно сделать. Кроссплатформенность не критична - если в Windows есть отличный способ сделать это, я могу убедиться. Наличие поддержки сообщества важно.

Я слышал, что HighGUI предназначен исключительно для тестирования и не подходит для реальных приложений. Кто-то рекомендовал библиотеку VideoInput , но она экспериментальная.


Ключевые моменты из ответов:

  • Используйте Qt (потому что Qt великолепен и имеет большое сообщество).
  • Откройте новый поток для запуска cv :: VideoCapture в цикле и испустите сигнал после захвата кадра. Используйте механизм Qt msleep , а не OpenCV. Итак, мы все еще используем OpenCV highgui для захвата.
  • Преобразование cv :: Mat в QtImage:

    QImage qtFrame (cvFrame.data, cvFrame.size (). Width, cvFrame.size (). Height, cvFrame.step, QImage :: Format_RGB888);

    qtFrame = qtFrame.rgbSwapped ();

  • Необязательно: Визуализируйте с помощью GLWidget. Преобразуйте QtImage в GLFormat с помощью встроенного метода Qt:

    m_GLFrame = QGLWidget :: convertToGLFormat (frame);

    this-> updateGL ();

12
задан Matt Montag 18 October 2011 в 18:44
поделиться