2016-12-14 5 views
0

The documentation for load_siftОткрытие файлов изображений для load_sift в scikit-изображения

from skimage import io img = open('g.png') rv = io.load_sift(img)

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

+0

Эта функция очень плохо написана, и документация почти не существует. Я рекомендую вам искать альтернативы ... – Jalo

+0

Я не уверен, что вы имеете в виду, @Jalo: docstring четко заявляет, что функция считывает файлы SIFT и откуда происходят эти файлы (http://scikit-image.org/ Docs/DEV/API/skimage.io.html # skimage.io.load_sift). –

+0

@StefanvanderWalt Вы пробовали использовать свой метод ниже с любым образцом изображения, а затем применяете функцию load_sift() OP? Потому что я сделал, и это вызывает ошибку кодирования. На самом деле, я изначально думал, что проблема была такой же, как вы упомянули ниже, и попробовали аналогичное решение. – Jalo

ответ

3

Подпрограмма load_sift не предназначена для работы с массивами numpy или файлами изображений. Поскольку параметр f документирована, говорится:

Input file generated by the feature detectors from 
http://people.cs.ubc.ca/~lowe/keypoints/ or 
http://www.vision.ee.ethz.ch/~surf/ 

Т.е., они специально отформатированные файлы с SIFT ориентирами, уже извлечены двоичных файлов, найденных в этих URL. Причина, по которой мы не вычисляем функции SIFT внутри scikit-образа, состоит в том, что эти процедуры пагубно обременены, поэтому для их вычисления вы должны использовать внешнюю утилиту или библиотеку.

В scikit-изображения, вы читаете в изображениях следующим образом:

from skimage import io 
image = io.imread('g.png') 

Это возвращает Numpy массив, который вы можете манипулировать любым способом, который вы хотите. Чтобы дополнительно извлечь SIFT особенности:

  1. Скачать внешнюю дискретный
  2. запустить его на изображениях
  3. Загрузите полученный файл с load_sift

Поскольку неопределенность в строке документации, у меня есть made a patch чтобы пояснить, что необходим внешний инструмент.

+0

Как упоминалось в @Jalo, это не работает с функцией load_sift(). –

+0

Я расширил ответ, чтобы ответить на приведенные выше комментарии. –

+0

Это ясно для меня сейчас;) Однако я бы также добавил к первой строке docstring, что входной файл должен иметь специальный формат ... – Jalo