Веб-проект C++ с использованием OpenCV с Wt

Что является хорошей платформой для веб-проекта, который обрабатывает изображения с использованием библиотеки OpenCV? Я нашел Wt ( http://www.webtoolkit.eu/wt ).

Могу ли я использовать OpenCV с Wt? Есть ли лучшие альтернативы Wt?

Требования:

Графический интерфейс страницы входа для загрузки документов, выбора областей на изображении, обнаружения рукописных слов/строк с использованием OpenCV.


person heykell    schedule 11.12.2010    source источник


Ответы (3)


Я использовал Wt в прошлом, это очень полезно, хотя и громоздко. Это связано с необходимостью поддерживать широкий спектр веб-браузеров, поэтому в некоторых случаях это функция.

Если вы программист, близкий к металлу, я бы порекомендовал PION и реализовать свой графический интерфейс, используя некоторые из ваших навыков веб-разработки:

http://www.pion.org/projects/pion-network-library

Вы можете использовать OpenCV практически с любой сетевой библиотекой. Хороший обзор вашего выбора доступен здесь, на StackOverflow:

https://stackoverflow.com/questions/175507/c-c-web-server-library

person qdot    schedule 12.12.2010

Я думаю, что то, что вы просите, возможно с Wt. Я не могу предвидеть проблем с подключением OpenCV в Wt, и система определенно достаточно интерактивна, чтобы обеспечить описанный вами функционал. Сначала реализуйте его с помощью действий на стороне сервера, а при необходимости вы все еще можете оптимизировать части с помощью небольших фрагментов JS на стороне клиента.

person user52875    schedule 30.12.2010

FWIW, это простой код для отображения изображения OpenCV (возможно, изменение изображения во время работы приложения):

Wt::WMemoryResource* cvMat2res(const cv::Mat& img){
    std::vector<uchar> buf;
    cv::imencode(".png",img,buf); // by default, the fastest compression
    auto ret=new Wt::WMemoryResource(this);
    ret->setMimeType("mime/png");
    ret->setData(buf); // data is copied here
    return ret;
}

/* ... */
auto img=new Wt::Image();
root()->addWidget(img);
Wt::WMemoryResource* imgRes=nullptr;

/* set image data; this can be done also in event handler and the image updates itself automatically from the new resource */
if(imgRes) delete imgRes;
imgRes=cvMat2res(cvImage);
img->setImageLink(imgRes);
person eudoxos    schedule 19.01.2018
comment
Привет, я пытаюсь показать видеоввод с помощью opencv, используя ваш код. Он работает для одного изображения, но когда я пробую его в цикле, веб-страница показывает «Загрузка», и ничего не происходит. - person Ali; 22.11.2019
comment
Одна из возможностей заключается в том, что вы обновляете изображение до того, как оно будет передано — вы пробовали с очень низкой частотой кадров? Другая возможность заключается в том, что вам нужно вызывать повторную загрузку не из цикла, а с использованием периодического таймера (иначе вы блокируете цикл событий), чтобы другие события могли быть обработаны. Я не эксперт в Wt, но это было бы в случае с Qt. - person eudoxos; 24.11.2019