修改张量流中的像素值

时间:2018-05-15 08:38:38

标签: python image tensorflow pixels

我正在学习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 :(得分:0)

您可以使用Pillow

直接将图像转换为灰度
from PIL import Image
img = Image.open('/some path/image.png').convert('L')

我更喜欢用numpy预处理图像,然后再将它们输入tensorflow。 我不确定你的数组有哪种形状,我建议将图像转换为2 dim np数组。在下面的情况下,我将像素列表(shape = [784])转换为shape = 28x28的数组。之后,您可以直接对每个像素执行操作。

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