我正在学习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?
答案 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)