Различия между AForge и OpenCV - PullRequest
49 голосов
/ 15 апреля 2009

Я только изучаю компьютерное зрение и C #. Кажется, две известные библиотеки обработки изображений: OpenCV и AForge . Каковы некоторые из двух различий?

Я делаю основной редактор изображений на C #, и во время исследования я наткнулся на статьи по обоим направлениям. Но я действительно не знаю, почему я выбрал бы одно из другого. Я хотел бы со временем улучшить приложение, добавив в него более продвинутые функции.

Спасибо.

Ответы [ 3 ]

43 голосов
/ 23 января 2011

Ну, почему бы не использовать оба;) ??

Я использую (буквально в C # ... lol) EMGUCV.NET (который является оболочкой OpenCV C #) и AFORGE.NET одновременно:

AFORGE.NET и его «Лаборатория обработки изображений» имеют много смысла для параметров фильтрации (обнаружение краев, пороговые значения и т. Д.) И упрощения функций просмотра.

OpenCV предоставляет все остальное, как SIFT / SURF и другие более сложные процедуры обработки изображений.

Вот почему вы используете .NET: просто объедините все необходимые компоненты в одном приложении:)

19 голосов
/ 25 апреля 2009

Я использую OpenCV для проекта в школе прямо сейчас, и я просмотрел документацию для AForge, и их функции, кажется, отличаются. AForge имеет много фильтров и, вероятно, отлично подходит для различных преобразований и манипуляций с изображениями. Но в других областях этого, похоже, не хватает. Я не мог найти какие-либо матричные операции, что было разочарованием, поскольку это так полезно в компьютерном зрении. Наш текущий проект (реконструкция трехмерного облака точек по последовательности изображений), насколько я мог видеть из документов, невозможно сделать только с помощью AForge.

Объедините AForge с хорошей библиотекой линейной алгебры, и у вас может быть что-то действительно полезное.

Что касается OpenCV, то он имеет богатый набор функций, но его немного сложно программировать.

3 голосов
/ 07 января 2010

Если вы хотите улучшить свое приложение с помощью все более и более продвинутых функций, как вы сказали, я бы пошел на OpenCV - однако, часть вашего успеха зависит от того, что порт C # активно обновляется, что не должно Это не проблема, учитывая три порта. Я думаю, что EmguCV кажется одним из лучших на данный момент с точки зрения обновления, но когда я смотрю на него, не хватает документации (но вы, вероятно, могли бы перевести код C ++ в C # с некоторыми знаниями C ++). AForge кажется мне намного проще, и именно этим я сейчас и пользуюсь. OpenCV также поддерживает файлы haarcascade.xml, которые вы можете использовать, включая распознавание лиц.

Итак, для окончательного решения: оба варианта подойдут вам хорошо, OpenCV более широко используется / поддерживается (хотя большинство пользователей основано на C ++), AForge проще. Все сводится к тому, что вы хотите сделать.

...