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

それで、たくさん掘った後。私はこの問題の解決策を見つけたと思いますopencv_modules.hpp: 呼び出されたフラグがあります:HAVE_OPENCV_NONFREE このundefineフラグの定義をコメントするかopencv、ソースからビルドする場合、これはこの問題を修正する必要opencv_stitching.dllがあります。opencv_non-free.dll

于 2016-01-25T15:44:29.910 に答える