【问题标题】:C++ web project using OpenCV with Wt使用 OpenCV 和 Wt 的 C++ Web 项目
【发布时间】:2010-12-11 13:51:59
【问题描述】:

对于使用 OpenCV 库进行图像处理的基于 Web 的项目,什么是好的平台?我找到了 Wt (http://www.webtoolkit.eu/wt)。

我可以将 OpenCV 与 Wt 一起使用吗?有没有比 Wt 更好的替代品?

要求:

登录页面 GUI 上传文件, 选择图像上的区域, 使用 OpenCV

进行手写字/行检测

【问题讨论】:

    标签: c++ opencv wt


    【解决方案1】:

    我过去使用过 Wt,它非常有用,虽然体积很大。它的臃肿与必须支持各种网络浏览器有关,因此在某些情况下它是一项功能。

    如果您更像是一个接近金属的程序员,我会推荐 PION,并使用您的一些 Web 创作技能来实现您的 GUI:

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

    您可以将 OpenCV 与几乎任何网络库一起使用。 StackOverflow 上对您的选择进行了很好的审查:

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

    【讨论】:

      【解决方案2】:

      我认为 Wt 可以满足您的要求。我无法预见在 Wt 中链接 OpenCV 会出现问题,而且该系统的交互性绝对足以提供您描述的功能。先用服务器端的动作来实现,如果需要,你仍然可以用少量的客户端 JS 来优化部分。

      【讨论】:

        【解决方案3】:

        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);
        

        【讨论】:

        • 嗨,我正在尝试使用您的代码使用 opencv 显示视频输入。它适用于单个图像,但是当我循环尝试时,网页显示“正在加载”并且没有任何反应。
        • 一种可能是您在图像传输之前刷新图像——您是否尝试过非常慢的帧速率?另一种可能性是您需要调用重新加载而不是从循环中,而是使用定期计时器(否则您会阻止事件循环),以便可以处理其他事件。我不是 Wt 方面的专家,但 Qt 就是这种情况。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-06
        • 1970-01-01
        • 2012-03-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多