Pull to refresh

OpenCV. Сравнительный анализ оболочек под C#

Reading time3 min
Views16K
Занимаясь анализом фото и видео потоков, поиском информации на изображении невольно столкнулся с открытой библиотекой OpenCV, про которую уже не раз упоминалось на Хабре. Но проблема в том, что OpenCV реализована для C++, а я программирую на C#.
Итак, чтобы не изучать C++ в тех тонкостях, которые мне бы потребовались для использования OpenCV я решил поискать wrapper этой библиотеки написанный под C#.

1. Разведка боем


Лезем в Google и буквально с первых результатов поиска находим полезные ссылки.
Самый распространенный wrapper OpenCV под C# это EmguCv.
Чуть менее известный – OpenCvDotNet.
И самый незаметный – OpenCvSharp.

// Смелые заявления о распространенности взяты из оценки количества запросов любимого браузера.

2. Сравнительный анализ


А что, собственно, можно сравнивать у врапперов одной и той же библиотеки OpenCV?
Если честно, то очень даже многое.

Например:
  • Процесс установки
  • Процент «обернутых» функций
  • Usability документации
  • Наличие примеров
  • И т.д.

Обо всем коротко, но по порядку.

А) Процесс установки:

EmguCV, OpenCVDotNet: Вполне разумный инсталлер. Вроде бы все прекрасно и что-то куда-то поставилось, НО как только мы открывает в MSVS пример, возникает безумное количество ошибок и предупреждений о том, что ссылки на библиотеки не работают, нужные dll- файлы найти не может и т.п.

Если руки растут правильно хочется разобраться, то прикрутить references и скопировать нужные dll в нужную папку можно. НО если есть инсталлер, почему бы не сделать это за разработчика?
Получается, что если целью установки было ознакомление со средой, то это ознакомление требует полного погружения.

OpenCvSharp: Никаких инсталлеров, качаем бинарники, кладем в папку с решением, запускаем, все работает! Не правда ли здорово?! Плюс к этому, для ознакомление, с которого, как правило, все и начинается на сайте враппера есть архив примеров, которые УЖЕ залиты в проект MSVC и достаточно нажать на кнопку Build Solution чтобы все запустить.
В этом решении примеров уже есть все нужные ссылки на библиотеки, ссылки на все изображения и в целом такой проект вызывает чувство удовлетворения.

Б) Процент «обернутых» функций


Name EmguCV OpenCvSharp OpenCVDotNet
Cross Platform (Mono) YES NO NO
OpenCV 2.0 YES YES NO
Machine Learning YES YES NO
Exception Handling YES YES NO
Debugger Visualizer YES YES YES
Actively Maintained YES YES NO

//Таблица взята (почти) с сайта EmguCV

В) Usability документации

EmguCV: На сайте лежит полное описание всех функций, сделанное по прототипу MSDN. Много комментариев.
+ Не нужно загружать всю документацию, если нужно посмотреть какой то один пример.
При отсутствии интернета он-лайн документация бесполезна.

OpenCVSharp: На сайте этого враппера есть ссылка на скачивание документации в двух форматах, .chm и .html
+ Один раз загрузил и постоянно используешь.
При смене компьютера, например с домашнего на рабочий, документацию нужно либо скачивать еще раз, либо таскать с собой.

OpenCVDotNet: Документации просто нет.!!!

3. Итоги


По понятным причинам OpenCVDotNet остается на обочине дороги. В то же самое время у EmguCV и OpenCvSharp есть как плюсы так и минусы работы. Но они оба радикально отличаются от третьего конкурента.
Выбор всегда остается за разработчиком.
Я для себя выбрал OpenCVSharp и доволен:)

P.s. Это моя первая статья на Хабре.Не судите строго. С радостью приму в дар конструктивную критику по оформлению.
Tags:
Hubs:
Total votes 14: ↑11 and ↓3+8
Comments6

Articles