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

    Занимаясь анализом фото и видео потоков, поиском информации на изображении невольно столкнулся с открытой библиотекой 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. Это моя первая статья на Хабре.Не судите строго. С радостью приму в дар конструктивную критику по оформлению.

    Комментарии 6

      +1
      Я почему-то сначала подумал что это какой-то стандарт для резюме. Только потом Википидия сообщила мне, что CV=computer vision.
        0
        Если это был очень тонкий намек на то, что нигде нет ссылки на описание исходной (OpenCV) библиотеки, то поправил, спасибо!)

        0
        пользуюсь emgucv. Как будет время попробую opencvsharp. Хотя просто из любопытства. А так после геморной установки с emgu проблем нет.
        Спасибо, за статью.
          0
          При вашем желании (желании читателей) могу написать статью про распознавание лиц. Какие алгоритмы присутствуют в реализации OpenCV и что с ними можно делать.
            0
            Я про это знаю. А вот если у вас есть желание — пишите. Уверен, что тут есть те, кому будет интересно. На хабре начинали писать про opencv, но быстро перестали. Видимо, надеялись, что будет больший интерес.
              0
              Согласен. Но интерес надо иногда подогревать )

        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

        Самое читаемое