5

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

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将不会运行。我的问题是:为了使用Stitcher来自 opencv 的课程,这是否意味着您必须付费,即使您不使用SURFSIFT算法?有没有办法在不使用“非自由 dll”的情况下做到这一点?注意:我正在使用opencv 2.4.2. 编辑:我也用OpenCV 2.4.11

4

1 回答 1

1

所以,经过大量的挖掘。我想我已经找到了解决这个问题的方法: There is a flag in opencv_modules.hppcalled: HAVE_OPENCV_NONFREE If you undefineor comment the definition of this flag and build opencvfrom source 那么这应该解决这个问题,即opencv_stitching.dll不会依赖opencv_non-free.dll

于 2016-01-25T15:44:29.910 回答