Как я преобразовываю массив numpy в (и дисплей) изображение?

Что происходит

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

Решение

Функция isset проверит, определен ли ключ массива.

//You must first of all test isset and then is_numeric,
// else you still get the error. Research 'short circuiting' in php 
if ( isset($args['myargs']['custom_value']) && is_numeric($args['myargs']['custom_value'])) {
    echo 'Yes';
} else {
    echo 'No';
}

Это решение также выведет «Нет», если ключ массива никогда не определялся.

188
задан kmario23 27 April 2019 в 12:27
поделиться

6 ответов

Вы могли используйте PIL для создания (и отображения) изображения:

from PIL import Image
import numpy as np

w, h = 512, 512
data = np.zeros((h, w, 3), dtype=np.uint8)
data[256, 256] = [255, 0, 0]
img = Image.fromarray(data, 'RGB')
img.save('my.png')
img.show()
186
ответ дан 23 November 2019 в 05:42
поделиться

Используя fromarray подушки, например:

from PIL import Image
from numpy import *

im = array(Image.open('image.jpg'))
Image.fromarray(im).show()
-1
ответ дан 23 November 2019 в 05:42
поделиться

Следующее должно работать:

from matplotlib import pyplot as plt
plt.imshow(data, interpolation='nearest')
plt.show()

Если вы используете Jupyter notebook / lab, используйте эту встроенную команду перед импортом matplotlib:

%matplotlib inline 
249
ответ дан 23 November 2019 в 05:42
поделиться

Библиотека изображений Python может отображать изображения с использованием массивов Numpy. Взгляните на эту страницу для примера кода:

РЕДАКТИРОВАТЬ: Как указано в примечании внизу этой страницы, вам следует проверить последние примечания к выпуску, которые делают это намного проще:

http://effbot.org/zone/pil-changes-116.htm

1
ответ дан 23 November 2019 в 05:42
поделиться

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

4
ответ дан 23 November 2019 в 05:42
поделиться

Кратчайший путь - использовать scipy , например:

from scipy.misc import toimage
toimage(data).show()

Для этого также необходимо установить PIL или Pillow.

Аналогичный подход, также требующий PIL или Pillow, но который может вызывать другого зрителя :

from scipy.misc import imshow
imshow(data)
51
ответ дан 23 November 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: