Подпрограмма 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 особенности:
- Скачать внешнюю дискретный
- запустить его на изображениях
- Загрузите полученный файл с
load_sift
Поскольку неопределенность в строке документации, у меня есть made a patch чтобы пояснить, что необходим внешний инструмент.
Эта функция очень плохо написана, и документация почти не существует. Я рекомендую вам искать альтернативы ... – Jalo
Я не уверен, что вы имеете в виду, @Jalo: docstring четко заявляет, что функция считывает файлы SIFT и откуда происходят эти файлы (http://scikit-image.org/ Docs/DEV/API/skimage.io.html # skimage.io.load_sift). –
@StefanvanderWalt Вы пробовали использовать свой метод ниже с любым образцом изображения, а затем применяете функцию load_sift() OP? Потому что я сделал, и это вызывает ошибку кодирования. На самом деле, я изначально думал, что проблема была такой же, как вы упомянули ниже, и попробовали аналогичное решение. – Jalo