2016-08-11 7 views
2

以下のコードで、OpenCVとTensorflowで同じイメージを読んでいます。OpenCVイメージで視覚化テンソルで読む

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

私はcv2.normalize(image, image, 0, 255, cv2.NORM_MINMAX, dtype=cv2.CV_8UC3)を使用してTensorflowの画像の色を正常化しようとしたが、何も変わっていません。

私はtf.uint8(イニシャルキャストをtf.float32にキャストしていない)と読むことに努めましたが、変更はありません。

OpenCVを使用してTensorflowで読み取った画像を正しく表示するにはどうすればよいですか?

+0

、tensorflowにRGBの画像を読み取るためのデフォルトの順序は何ですか?それはBGRかRGBですか? – EdChum

+0

あなたはそうです! Tensorflow形式はRGBで、OpenCV形式はBGRです。では、これら2つの色空間をどのように変換できますか? – nessuno

+0

私は今すぐドキュメントを見ています。チャネルオーダーを指定するオプションが表示されないため、読み込んだ後にチャンネルを自分で入れ替える必要があるかもしれません。 – EdChum

答えて

3

てみてください:赤と青のチャンネルが入れ替わっているように見える

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

ありがとうございました。 – nessuno

関連する問題