2016-08-11 7 views
2

Mit dem Code unten lese ich das gleiche Bild mit OpenCV und mit Tensorflow.Visualisieren mit OpenCV Bild lesen von 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) 

Wie Sie aus dem Bild sehen können, dass es ein Unterschied zwischen dem Bild von OpenCV (rechts Farben) und durch Tensorflow (falsche Farben) lesen.

tensorflow vs opencv

Ich habe versucht, die Farben des Tensorflow Bild zu normalisieren mit cv2.normalize(image, image, 0, 255, cv2.NORM_MINMAX, dtype=cv2.CV_8UC3) aber nichts geändert.

Ich habe auch versucht, das Bild als tf.uint8 zu lesen (Entfernen der Initial Cast zu tf.float32), aber keine Änderungen.

Wie kann ich das mit Tensorflow gelesene Bild anzeigen, wenn OpenCV korrekt verwendet wird?

+0

es sieht aus wie die roten und blauen Kanäle vertauscht, was die Reihenfolge Bilder in tensorflow zum Lesen von RGB Standard ist? ist es BGR oder RGB? – EdChum

+0

Sie haben Recht! Das Tensorflow-Format ist RGB, während das OpenCV-Format BGR ist. Also, wie kann ich zwischen diesen 2 Farbräumen konvertieren? – nessuno

+0

Ich sehe jetzt nur die Dokumente, Sie müssen möglicherweise die Kanäle selbst nach dem Laden tauschen, da ich keine Optionen sehe, um die Kanalreihenfolge zu spezifizieren – EdChum

Antwort

3

Versuchen:

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

Vielen Dank, es funktioniert! – nessuno