Отображение кадров opencv в окне с кнопками и текстовым управлением - PullRequest
1 голос
/ 20 мая 2011

Я бы хотел попросить вас рассказать о проблеме, которую я хочу решить.

На данный момент у меня есть два приложения opencv:

  • приложение A : где я отслеживаю объект с помощью двух типов алгоритмов и каждый раз сохраняю кадр в файле изображения и контролирую поведение приложения с помощью некоторых команд, которые пишу в оболочки

  • приложение B : где у меня есть цикл, который каждый раз читает файл изображения и отображает его Итак, я запускаю эти два приложения вместе, чтобы отслеживать объект с помощью appA и отображать результаты с appB, который читает каждый раз кадры, сохраненные appA на жестком диске.

Я хочу интегрировать приложение B в приложение A, чтобы показать окно (например: http://lnx.mangaitalia.net/window.jpg), чтобы иметь цикл, показывающий изображение в первой области, и использовать кнопки по порядку. давать команды, которые на данный момент я пишу в оболочке .

Как вы думаете, возможно ли отобразить кадры в области с помощью Qt или opengl или wxwidgets?

Какое решение лучше и проще для применения?

На данный момент мое приложение B очень простое:

 while(1)
{
    Mat img=imread("result.jpg",1);
    if(!img.empty())
        imshow("HOG",img);
    if(waitKey(200)==27) break;
}

Я хочу показать эти кадры в окне, которое также имеет несколько кнопок. В частности, как вы можете видеть на прикрепленном изображении в этом посте, я хочу создать окно, разделенное на две части: первая, которая отображает кадры, снятые камерой opencv, и вторая часть (или область), которая имеет несколько кнопок ( B1, B2, B3 ..), которые пользователь может нажать, чтобы контролировать поведение приложения. (В настоящее время я использую переключатель / чехол в appA для захвата клавиш клавиатуры)

Есть пример, основанный на шаблоне, похожем на то, что я хотел бы сделать? (как изображение jpg, которое я говорил ранее: http://lnx.mangaitalia.net/window.jpg)

Ответы [ 2 ]

0 голосов
/ 07 июля 2011

Есть несколько примеров того, как это можно сделать.

см. http://larryo.org/work/information/wxopencv/index.html

В основном вы хотите сделать следующее:

  • захват кадра с вашей камеры
  • манипулировать изображением
  • используйте cvConvertImage, чтобы преобразовать его в формат, который может прочитать wxImage
  • нарисовать это изображение на wxCanvas

Для этой части GUI вам нужно будет создать wxFrame или wxWindow, разместить размеры и кнопки в соответствующих местах.

Так что, в основном, сделайте рамку, поместите sizer на раму, затем вставьте панель в sizer. Далее сделайте вертикальный сортировщик на панели. Сначала добавьте wxCanvas к вертикальному сортировщику, затем поместите горизонтальный сортировщик в вертикальный сортировщик. Теперь добавьте 3 кнопки в горизонтальный размер, и у вас есть панель.

0 голосов
/ 20 мая 2011

Я предлагаю вам просто использовать встроенный графический интерфейс в OpenCV: highgui. Он имеет ввод с клавиатуры / мыши, управление окном с циклом сообщений, кнопки, ползунки и т. Д. И нет необходимости делать какие-либо преобразования cv-изображений, чтобы показать их.

Взгляните на: http://dasl.mem.drexel.edu/~noahKuntz/openCVTut3.html (написано для старого резюме в стиле IplImage, но интерфейс C ++ почти такой же, используйте cv :: imshow для рисования изображений)

Кроме того, вот документация для интерфейса в стиле C ++.

Существует также возможность конвертировать ваши CV-изображения в QImage в Qt и делать это таким образом ... вы сможете найти решение для этого в Google.

...