2015-12-16 2 views
1

Далее читает в детские в массив:как читать в PNG в п х п-массив с заранее определенной величиной «п» в Matplotlib с помощью imread

import matplotlib.pyplot as plt 
import matplotlib.image as mpimg 
import numpy as np 

img=mpimg.imread('example.png') 

результатом является массив img, который например 1024 × 1024-массив кортежей (см. http://matplotlib.org/1.3.1/users/image_tutorial.html):

Как я могу обеспечить, чтобы мой результат был n x n-array (кортежей) вместо 1024 x 1024-массива (n < 1024)? Мне нужно явно определить размерность этого массива (например, установить 400x400).

Заранее спасибо

+0

К сожалению, я не совсем понимаю. Вы получаете массив с тем же количеством элементов, что и пиксели на изображении. Вы хотите изменить его размер? Обрезать? – kwinkunks

+0

@kwinkunks точно! – DonkeyKong

ответ

1

Я рекомендую установить pillow (предпочтительно с использованием Anaconda). Это упрощает манипуляции с изображениями - в основном проще, чем обрабатывать изображение как необработанное ndarray.

После того, как вы установили pillow, этот ответ должен помочь: How do I resize an image using PIL and maintain its aspect ratio?

Если вы действительно хотите, чтобы сохранить его как массив, то вы можете использовать scipy.misc.imresize.

Редактировать добавить вещь, которая на самом деле работал, в случае, если другие пропусти:

import scipy.misc 
img_rescaled = scipy.misc.imresize(img, size=[400,400], interp='bilinear') 
+1

Да, мне нужно сохранить его как массив для последующего использования. Ваше предложение использовать 'scipy.misc.imresize' работает отлично, я просто добавил' img_rescaled = scipy.misc.imresize (img, [400,400], interp = 'bilinear', mode = None) ', чтобы получить то, что я хотел. благодаря – DonkeyKong