opencv拼接免费dll

opencv stitching with free dll

我的项目中有一个函数可以进行拼接,该函数运行良好,非常简单:

Mat output(m_Img, true), pano; // a panaoramic image

    bool try_use_gpu = true;
    Stitcher iSticher = Stitcher::createDefault(try_use_gpu);   
    // Set Feature finder to be ORB
    iSticher.setFeaturesFinder(new detail::OrbFeaturesFinder());

    try{

        Stitcher::Status status = iSticher.stitch(Imgs, pano);
        if (status != Stitcher::OK)
        {
            LOG("Error stitching - Code: %d", int(status));
            return -1;
        }
    }
    catch(exception e)
    {
        LOG("Cannot Stitch Image,%s",e.what());
    }

代码运行良好,我能够很好地拼接图像。唯一的问题是,当我想部署我的代码时,我意识到我必须使用非自由 dll。否则,.exe 不会 运行。我的问题是:为了从 opencv 使用 Stitcher class 这是否意味着你必须付费, 即使你没有使用 SURFSIFT 算法?有没有不使用 "nonfree dlls" 的方法? 注意:我正在使用 opencv 2.4.2。编辑:我还使用 OpenCV 2.4.11

对其进行了测试

所以,经过大量挖掘。我想我已经找到了解决这个问题的方法: opencv_modules.hpp 中有一个标志叫做:HAVE_OPENCV_NONFREE 如果您 undefine 或评论此标志的定义并从源代码构建 opencv 那么这应该可以解决此问题,即 opencv_stitching.dll 不会依赖于 opencv_non-free.dll