OpenCV шить с бесплатным 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 не побежит Мои вопросы: для того, чтобы использовать Stitcher класс из opencv означает ли это, что вы должны платить, даже если вы не используете SURF или же SIFT алгоритмы? Есть ли способ сделать это без использования «несвободных DLL»?
Примечание: я использую opencv 2.4.2, Изменить: я также проверил это с OpenCV 2.4.11

5

Решение

Итак, после долгих копаний. Я думаю, что нашел решение этой проблемы:
Есть флаг в opencv_modules.hpp называется: HAVE_OPENCV_NONFREE
если ты undefine или прокомментируйте определение этого флага и постройте opencv из источника, то это должно решить эту проблему, т.е. opencv_stitching.dll не будет зависеть от opencv_non-free.dll

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]