使用tensorflow读取的OpenCV图像进行可视化

使用tensorflow读取的OpenCV图像进行可视化,opencv,tensorflow,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

使用下面的代码,我使用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)
从图像中可以看出,OpenCV读取的图像(正确的颜色)与Tensorflow读取的图像(错误的颜色)之间存在差异

我尝试使用
cv2.normalize(image,image,0,255,cv2.NORM\u MINMAX,dtype=cv2.CV\u 8UC3)对Tensorflow图像的颜色进行规范化处理
,但没有任何改变

我还尝试将图像读取为
tf.uint8
(删除转换为
tf.float32
)但没有更改

如何正确使用OpenCV显示使用Tensorflow读取的图像?

试试:

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

看起来红色和蓝色通道交换了,在tensorflow中读取RGB图像的默认顺序是什么?是BGR还是RGB?你说得对!Tensorflow格式为RGB,而OpenCV格式为BGR。那么,我如何在这两个颜色空间之间转换呢?我现在正在查看文档,加载后您可能需要自己交换频道,因为我看不到任何指定频道顺序的选项