2016-08-11 2 views
2

С приведенным ниже кодом я читаю одно и то же изображение с OpenCV и с Tensorflow.Визуализируйте изображение с OpenCV, прочитанное tensorflow

import tensorflow as tf 
import cv2 

def get_image(image_path): 
    """Reads the jpg image from image_path. 
    Returns the image as a tf.float32 tensor 
    Args: 
     image_path: tf.string tensor 
    Reuturn: 
     the decoded jpeg image casted to float32 
    """ 
    return tf.image.convert_image_dtype(
     tf.image.decode_jpeg(
      tf.read_file(image_path), channels=3), 
     dtype=tf.uint8) 


path = "./images/2010_006748.jpg" 
original_image = cv2.imread(path) 

image_tensor = get_image(tf.constant(path)) 
# convert to uint8 
image_tensor = tf.image.convert_image_dtype(image_tensor, dtype=tf.uint8) 
with tf.Session() as sess: 
    image = sess.run(image_tensor) 

cv2.imshow("tf", image) 
cv2.imshow("original", original_image) 
cv2.waitKey(0) 

Как вы можете видеть на картинке, Ther разница между изображением прочитан OpenCV (правый цвета) и Tensorflow (неправильные цвета).

tensorflow vs opencv

Я пытался нормализовать цвета изображения Tensorflow используя cv2.normalize(image, image, 0, 255, cv2.NORM_MINMAX, dtype=cv2.CV_8UC3) но ничего не изменилось.

Я также попытался прочитать изображение как tf.uint8 (удаление начального литья до tf.float32), но никаких изменений.

Как я могу отобразить изображение, считываемое с помощью Tensorflow, используя OpenCV правильно?

+0

это выглядит как красные и синие каналы поменялись местами, что порядок по умолчанию для чтения RGB изображения в tensorflow? это BGR или RGB? – EdChum

+0

Вы правы! Формат Tensorflow - RGB, а формат OpenCV - BGR. Итак, как я могу преобразовать эти два цветовых пространства? – nessuno

+0

Я просто смотрю на документы сейчас, вам, возможно, придется поменять местами сами после загрузки, так как я не вижу никаких параметров для указания порядка канала. – EdChum

ответ

3

Try:

bgr_img = cv2.cvtColor(original_image, cv2.COLOR_RGB2BGR) 
+0

Спасибо, он работает! – nessuno

Смежные вопросы