sanya84
@sanya84
Фанатик Python 3

Как изображение преобразовать в массив numpy?

Есть такое очень занимательное видео о нейронных сетях:
Что же такое нейронная сеть?
Автор на этом видео, показывает картинку - это массив из чисел с плавающей точкой от 0 до 1:
5ec29401b9589660163149.png
У меня есть такая картинка:
5ec294959c174525410914.png
Вопрос как мне её преобразовать в в такой же массив как у автора на видео.
Вот код
from PIL import Image
import numpy

def converting_image_to_array():
    image = Image.open("image.png")
    array = numpy.array(image)
    print(array)

def main():
    converting_image_to_array()

if __name__ == '__main__':
    main()

Дальше я не знаю что делать
P.S. картинка 28x28 массив должен состоять из 784 чисел от 0 до 1 градация серого
  • Вопрос задан
  • 90 просмотров
Решения вопроса 1
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
Например:
import numpy as np
import cv2

...
color_image = cv2.imread(FILE)
gray_image = cv2.cvtColor(color_image, cv2.COLOR_BGR2GRAY)

n_image = np.around(np.divide(gray_image, 255.0), decimals=1)


[[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.2 0.7 0.9 1. 0.9 0.7 0.4 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.6 1. 1. 1. 1. 1. 1. 1. 0.8 0.1 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 1. 1. 1. 1. 1. 1. 1. 0.8 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0.1 1. 1. 0.9 0.4 0.1 0. 0.1 0.4 0.9 1. 1. 0.4 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0.4 1. 1. 0.3 0. 0. 0. 0. 0. 0.3 1. 1. 0.7 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 1. 0.8 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 1. 0.6 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.3 1. 1. 0.3 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.2 0.6 1. 1. 0.6 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 1. 1. 0.5 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.6 0.8 0.8 0.9 1. 1. 0.6 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.4 1. 1. 0.7 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.4 1. 1. 0.4 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 1. 0.7 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.9 1. 0.8 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0.7 1. 0.9 0. 0. 0. 0. 0. 0. 0. 0.1 1. 1. 0.7 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 0.5 0. 0. 0. 0. 0. 0. 0.7 1. 1. 0.5 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0.1 1. 1. 1. 0.6 0.2 0. 0.1 0.3 0.8 1. 1. 1. 0.1 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 0.4 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0.5 1. 1. 1. 1. 1. 1. 1. 1. 0.4 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.2 0.6 0.9 1. 1. 0.8 0.5 0.1 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. ]]

Если округлять не нужно - то достаточно
np.divide(gray_image, 255.0)
З.Ы. Видео не смотрел
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
aRegius
@aRegius
Python Enthusiast
Возьмите OpenCV, прочитайте изображение в режиме Grayscale (чтобы получить массив значений 0-255) и разделите на 255. Чтобы прочитать в режиме GS просто поставьте численное значение режима равным нулю:
grayscale_image = cv2.imread(your_image, 0)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы