Преобразование изображения в массив numpy в python

Я использую Python + Scipy + Scikit-image + numpy в первый раз.

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

tree = misc.imread('C:\\Users\\app\\Pictures\\treephoto1.jpg')
type(tree)
<type 'numpy.ndarray' >
tree.shape, tree.dtype((512, 512), dtype('uint8'))

Но я получаю следующую ошибку:

 type(tree) <type 'numpy.ndarray'>
                                   ^
SyntaxError: invalid syntax

Что не так с синтаксисом? Я использую Python 2.7 в Windows, и все связанные инструменты также соответствуют Python 2.7.

Мне нужно преобразовать изображение в двумерный массив numpy, чтобы я мог использовать с ним детектор осторожных краев.


person user961627    schedule 03.04.2014    source источник


Ответы (1)


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

>>> lena = misc.imread('lena.png')
>>> type(lena)
<type 'numpy.ndarray'>
>>> lena.shape, lena.dtype
((512, 512), dtype('uint8'))

>>> — строка приглашения интерактивной консоли Python. Это были команды go.

<type 'numpy.ndarray'> и ((512, 512), dtype('uint8')) являются результатами команд. Таким образом, ваш соответствующий код должен быть только

tree = misc.imread('C:\\Users\\app\\Pictures\\treephoto1.jpg')
type(tree)
tree.shape, tree.dtype

Заметь

type(tree)
tree.shape, tree.dtype

ничего не делать и просто показать вам информацию о ваших данных изображения.

Обновить

В основном (не всегда) ваше изображение многослойно. RGB — это три отдельных слоя. Поэтому, если ваша фильтрация не знает об этом, вам придется самостоятельно разделить слои.

Надеюсь, это поможет.

person twil    schedule 03.04.2014
comment
Я понимаю! Спасибо. Хорошо, я думаю, что пропустил важное слово в вопросе, сейчас редактирую. Я хочу, чтобы массив numpy был 2D. Я узнал, что изображения по умолчанию представляют собой двумерные массивы, но когда я запускаю Edge = filter.canny(tree), это дает мне сообщение об ошибке, говорящее, что входное изображение должно быть двумерным массивом. - person user961627; 03.04.2014
comment
Хорошо, я только что узнал! Я могу преобразовать его в изображение в градациях серого, чтобы превратить его в 2D-массив. Я сделал так: graytree = color.rgb2gray(дерево). Просто побочный вопрос: большинство алгоритмов обработки изображений выполняются на серых изображениях? - person user961627; 03.04.2014