2016-06-16 5 views
2

Я хотел преобразовать изображение RGB в оттенки серого вручную без использования библиотеки в тензорном потоке. Поэтому я написал следующее ...Преобразование RGB в оттенки серого вручную tensorflow

import tensorflow as tf 
import matplotlib.image as mpimg 
import matplotlib.pyplot as plt 

# First, load the image again 
filename = "MarshOrchid.jpg" 
raw_image_data = mpimg.imread(filename) 

image = tf.placeholder("float", [None, None, 3]) 
slice = tf.slice(image,[0,0,0],[-1,-1,1]) 

with tf.Session() as session: 
    result = session.run(slice, feed_dict={image: raw_image_data}) 
    plt.imshow(result) 
    plt.show() 

Я извлек первый канал изображения для преобразования. Но это порождает ошибку при использовании imread говоря

TypeError: Invalid dimensions for image data 

Что я должен делать?

+0

Какая строка выдает ошибку? –

+0

plt.imshow (result) –

+0

Shubham, вы нашли решение для этого? Я встретил подобную проблему, показывая изображение с imshow – Fiona

ответ

2

Из doc из plt.imshow (Х):

X: array_like, форма (п, т) или (п, м, 3) или (п, м, 4)

Здесь у вас есть ввод формы [None, None, 1]. Вам просто нужно удалить последние измерения следующим образом:

result = np.squeeze(result, 2) 
+0

Был ли мой метод для преобразования в оттенки серого правильно (исключая 2 канала), или мне нужно усреднять 3 канала –

+0

Среднее! Это лучше –