opencv拼接与免费dll

时间:2016-01-15 22:16:37

标签: c++ opencv dll opencv-stitching

我的项目中有一个函数可以拼接,功能很好,很简单:

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类,这意味着您必须付费,即使您没有使用SURFSIFT 算法吗?有没有办法在不使用“nonfree dlls”的情况下做到这一点? 注意:我使用的是opencv 2.4.2。编辑:我还使用OpenCV 2.4.11

对其进行了测试

1 个答案:

答案 0 :(得分:1)

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