Изменить значения пикселей в тензорном потоке - PullRequest
0 голосов
/ 15 мая 2018

Я изучаю Tensorflow и Python.Я попытался прочитать изображение из файла, а затем отобразить это изображение с помощью matplotlib.Вот мой код.

import matplotlib.pyplot as plt
import tensorflow as tf    
# read and decode the image
image_contents = tf.read_file('elephant.jpeg')
image = tf.image.decode_jpeg(image_contents, channels=3)

with tf.Session() as sess:  
    img = sess.run(image)
    print(img)
    plt.axis('off')
    plt.imshow(img)
    plt.show()

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

Например, я пытался сделать изображение в градациях серого.Итак, я хочу заменить значения R, G и B средними значениями R, G и B пикселя.Как мне это сделать?

Я также хочу знать, должен ли я сосредоточиться на Python или Tensorflow?

1 Ответ

0 голосов
/ 15 мая 2018

Вы можете напрямую преобразовать изображение в оттенки серого с помощью Подушки.

from PIL import Image
img = Image.open('/some path/image.png').convert('L')

Я предпочитаю предварительно обрабатывать изображения с использованием numpy перед подачей их в тензорный поток.Я не уверен, какую форму имеет ваш массив, я бы посоветовал преобразовать изображение в массив размером 2 dim np.В приведенном ниже примере я преобразую список пикселей (shape = [784]) в массив с shape = 28x28.После этого вы можете напрямую выполнять операции с каждым пикселем.

 image = np.reshape(img, (28,28)).astype(np.uint8)
...