Использовать обертки .Net OpenCV?
Итак, у нас есть этот курс обработки изображений в университете, и мы будем широко использовать OpenCV. Проблема в том, что OpenCV использует С++, но я более свободно владею С#, чем С++. Я знаю, что есть оболочки для OpenCV (OpenCVDotNet, SharperCV, EmguCV,...) Но я не знаю, что выбрать.
Мои вопросы:
- Какой из них обертывает большинство/всех функций OpenCV?
- Их даже стоит использовать? (Может не обновляться часто, не хватает функциональности или скорости,...)
- Или мне лучше очистить навыки С++?
Примечание: Я знаю, что мой вопрос - это возможный дубликат этого, но он старый (с 2008 года), и все может измениться.
Ответы
Ответ 1
Я не использовал EmguCV, но я использовал OpenCV некоторое время.
От веб-сайта SharperCV:
Оболочка Emgu CV.Net является нашей текущей рекомендацией, если вы хотите использовать OpenCV.
И, OpenCVDotNet больше похож на академическую песочницу, поэтому, если бы это был я, я бы использовал EmguCV для любых моих исследовательских проектов, в которых участвовал С#. Главным образом потому, что он активно поддерживается, и сегодня он имеет большинство возможностей доступных оберток.
Ответ 2
Я пробовал EmguCV. Диапазон функциональных возможностей, которые он поддерживает, хорош. Но если ваш проект - это то, в чем скорость является проблемой, тогда лучше было бы улучшить свои навыки на С++.
Я не знаю много о других упаковщиках. Однажды я был на одном месте. Я работал в emgucv во время моих академических кругов и должен был перейти на С++ в своей профессии.
Поверьте мне, вы не найдете слишком трудным переехать на С++.
Ответ 3
В качестве обновления я могу подтвердить ранее предоставленные ответы.
Я использовал как OpenCV с С++, так и EMGU Wrapper для исследований и работы, и я согласен частично с большинством людей.
EMGU CV может быть легко освоен, и ваш код будет намного легче понять, он потребует меньше строк кода, и есть достойный набор функций, которые вы можете назвать. Но это не полно.
Многие функции не будут предоставлять все первоначально запланированные функции, которые вы найдете в OpenCV 3.0, например. FindNonZero() не работает точно так же, как функция, которая обертывается, и SetValue() затрудняет отладку ошибок времени выполнения.
С другой стороны, OpenCV обеспечивает отличную поддержку по сравнению с любым другим Wrapper, который вы можете найти в Интернете, и вы будете работать с самыми современными библиотеками. OpenCV 3.1 - отличная версия, и я не обнаружил никаких проблем с ее запуском на Xcode или Visual Studio.
Поэтому я рекомендую всем, кто хочет погрузиться в компьютерное зрение и обработку изображений, чтобы перейти прямо к OpenCV С++. Если вы просто хотите работать над менее сложными проблемами, вы можете выбрать EMGU (я не могу рекомендовать других, поскольку я не знаком).