OpenCV и Computer Vision, где мы сейчас находимся? - PullRequest
6 голосов
/ 02 декабря 2011

Я хочу сделать проект с участием Computer Vision.В основном обнаружение / идентификация объекта.После некоторых исследований я продолжаю возвращаться в OpenCV.Но все уроки взяты из 2008 года (думаю, тогда это было здорово).Он не компилируется в Python на Mac, по-видимому.Я использую платформу C ++ прямо из Xcode, но ни одно из руководств не работает, поскольку они устарели, а документация отстой от того, что я могу разобрать.

Есть ли лучшее решение для того, что я делаю, и есть ли у кого-нибудь какие-либо предложения относительно изучения того, как использовать OpenCV?

Спасибо

Ответы [ 3 ]

6 голосов
/ 03 декабря 2011

У меня были похожие проблемы с началом работы с OpenCV, и из моего опыта это на самом деле самое большое препятствие для его изучения. Вот что сработало для меня:

  1. Эта книга: «Руководство по программированию приложений OpenCV 2 Computer Vision». Это самая актуальная книга, в которой приведены примеры того, как решать различные проблемы с компьютерным зрением (оглавление на Amazon можно посмотреть в «Look Inside!»). Это действительно помогло мне освоиться с OpenCV и научиться работать с библиотекой.

  2. Как уже говорили другие, образцы очень полезны. Для вещей, которые книга пропускает или охватывает кратко, вы можете найти более подробные примеры, просматривая образцы. Вы также можете найти разные способы решения одной и той же проблемы между книгой и образцами. Например, для поиска ключевых точек / функций в книге показан пример использования функций FAST:

    vector<KeyPoint> keypoints;
    FastFeatureDetector fast(40);
    fast.detect(image, keypoints);

    Но в примерах вы найдете гораздо более гибкий способ (если вы хотите выбрать, какой алгоритм обнаружения ключевых точек использовать):

    vector<KeyPoint> keypoints;
    Ptr<FeatureDetector> featureDetector = FeatureDetector::create("FAST");
    featureDetector->detect(image, keypoints);

Исходя из моего опыта, вещи со временем начинают щелкать, и для более конкретных вопросов вы начинаете находить актуальную информацию в блогах или прямо здесь, в StackOverflow.

2 голосов
/ 03 декабря 2011

Позвольте мне добавить пару вещей. Во-первых, я могу заверить вас, что привязки Python к OpenCV работают на Mac. Я использую их каждый день.

Многим нравится OpenCV по многим причинам:

  1. Лицензия хорошая, удобна для интеграции в коммерческие продукты и т. Д.
  2. Это довольно хорошо с технической точки зрения. Это дает вам эталонную реализацию современных алгоритмов.
  3. Это, как правило, довольно быстро по сравнению с альтернативами (Matlab, я смотрю на тебя).

Как и все в жизни, оно не идеально:

  1. Это хороший пример библиотеки программного обеспечения, которая является движущейся целью. У меня есть программа на 300 строк Python, которая использует OpenCV и каждые несколько месяцев, когда выходит новая версия OpenCV, я должен ее поменять адаптироваться к новым именам функций / соглашениям о вызовах и т. д. библиотека продвигается, очень много, но менять ее - боль одна и та же программа 3 раза в год.
  2. У него есть кривая обучения, как и само компьютерное зрение, это довольно технический и не простой в освоении.

Существуют альтернативы (с другими плюсами и минусами). Одним из таких примеров является MATLAB с инструментарием обработки изображений.

0 голосов
/ 02 декабря 2011

Самый простой ответ, который приходит на ум, - это прочитать пример кода с небольшим пониманием и проверить, сработают ли Ваши идеи.API действительно меняется, и большинство учебных пособий написано для первых версий OpenCV, и, похоже, никто не удосужился их переписать.Тем не менее основные идеи, стоящие за этим, не меняются.Так что, если Вы найдете учебник, отвечающий на Ваши вопросы, но написанный на старом API, просто посмотрите в документации современную замену используемых функций.Это не легко и быстро, но похоже, что это работает.Если вы используете новейшую (на самом деле 2.3) версию, я предлагаю использовать и 2.1 документацию и 2.3 документацию + учебные пособия .Вы также должны посмотреть примеры, которые должны были быть установлены вместе с библиотекой.Есть много советов о том, как использовать определенные структуры и приемы, которые не были упомянуты в документации.Наконец, не бойтесь заглянуть внутрь кода самой библиотеки (если вы ее скомпилировали самостоятельно).К сожалению, это единственный источник, который я знаю, чтобы проверить, например, какой код соответствует типу объекта Mat.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...