Подтвердить что ты не робот

Машинное зрение в Python

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

Насколько мне известно, единственная свободная библиотека для Python, которая выполняет машинное зрение, PyCV (которая является оберткой для OpenCV, по-видимому), но я не могу найти подходящих учебников.

Мои главные задачи - получить изображение из FireWire. Сегментируйте изображение в разных регионах. Затем выполните статистику по каждой области для определения области пикселя и центра масс.

Раньше я без проблем использовал Matlab Image Tootlbox. Функции, которые я хотел бы найти в Python, это graythresh, regionprops и gray2ind.

Спасибо!

4b9b3361

Ответ 1

OpenCV, вероятно, лучший выбор для библиотеки; у вас есть для вас выбор оберток. Я посмотрел на оболочку SWIG, которая поставляется со стандартной установкой OpenCV, но в итоге использовала ctypes-opencv, потому что управление памятью было чище.

Они оба очень тонкие обертки вокруг кода C, поэтому любые ссылки на C, которые вы можете найти, будут применимы к Python.

OpenCV огромна и не особенно хорошо документирована, но есть несколько достойных образцов, включенных в каталог образцов, которые вы можете использовать для начала работы. Ссылка на API для поиска по OpenCV здесь.

Вы не упомянули, искали ли вы онлайн или источники печати, но у меня есть O'Reilly, и это неплохо ( примеры в C, но легко переводимые).

Функция FindContours немного похожа на regionprops; он предоставит вам список подключенных компонентов, которые вы можете проверить для получения информации.

Для определения порога вы можете попробовать Threshold. Я был уверен, что вы можете передать ему флаг, чтобы использовать метод Otsu, но он, похоже, не указан в документах.

Я не сталкивался с определенными функциями, соответствующими gray2ind, но они могут быть там.

Ответ 2

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

Анализ. Что касается лучшей библиотеки, отличной от OpenCV, то мое устаревшее мнение заключается в том, что OpenCV отлично подходит, если вы хотите делать довольно продвинутые вещи (например, отслеживание объектов), но это, возможно, слишком велико для ваших нужд. Похоже, что scipy ndimage в сочетании с некоторыми основными манипуляциями с массивом numpy может быть достаточно.

приобретение. Параметры, которые я знаю для приобретения, - это OpenCV, Motmot или использование ctypes для непосредственного взаимодействия с драйверами. Из них я никогда не использовал Motmot, потому что у меня были проблемы с его установкой. Другие методы, которые я нашел довольно простыми, хотя я не помню деталей (что хорошо, потому что это означает, что это было легко).

Ответ 3

Я запустил веб-сайт на эту тему: pythonvision.org. В нем есть несколько руководств, а также некоторые ссылки на программное обеспечение. Там есть больше ссылок и учебников.

Ответ 4

Вам, вероятно, будет хорошо служить SciPy. Ниже приведено вводное руководство для SciPy. Он имеет много общего с Matlab. Особенно включается пакет matplotlib, который явно предназначен для эмуляции функций построения Matlab. Я не верю, что SciPy имеет эквиваленты для упомянутых вами функций. Есть некоторые вещи, которые похожи. Например, порог - очень простая версия graythresh. Он не реализует метод "Otsu", он просто делает простой порог, но это может быть достаточно близко.

Мне жаль, что я не знаю никаких учебников, которые ближе к задаче, которую вы описали. Но если вы привыкли к Matlab, и вы хотите сделать это в Python, SciPy является хорошей отправной точкой.

Ответ 5

Я мало знаю об этом пакете Motmot или как он сравнивается с OpenCV, но я импортировал и использовал класс или два от него. Большая часть обработки изображений выполняется с помощью массивов numpy и может быть достаточно похожа на то, как вы использовали Matlab для удовлетворения ваших потребностей.

Ответ 6

Я приобрел изображение с камеры FW с помощью .NET и IronPython. На CPython я проверил бы библиотеку ctypes, если вы не найдете библиотечную поддержку для захвата.

Ответ 7

Предисловие: эта книга больше предназначена для людей, которые хотят получить хорошие руки от внедрения в компьютерное или машинное зрение, хотя оно охватывает то, что задал первоначальный вопрос.

[BOOK]: Программирование Vision Vision с Python

На данный момент вы можете бесплатно скачать окончательный вариант с веб-сайта в формате pdf:

http://programmingcomputervision.com/

Из введения:

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

Что вам нужно знать

  • Базовый опыт программирования. Вы должны знать, как использовать редактор и запускать сценарии, как структурировать код, так и основные типы данных. Знакомство с Python или другими языками стиля сценариев, такими как Ruby или Matlab, поможет.
  • Базовая математика. Чтобы в полной мере использовать примеры, это помогает, если вы знаете о матрицы, векторы, матричное умножение, стандартные математические функции и такие понятия, как производные и градиенты. Некоторые из более продвинутых математические примеры можно легко пропустить.

Что вы узнаете

  • Практическое программирование с использованием изображений с помощью Python.
  • Методы компьютерного зрения для широкого спектра реальных приложений.
  • Многие из основных алгоритмов и способы их реализации и применения - самостоятельно.