Opencv 正确地将图像从cvimg转换为张量
有没有一种正确的方法可以将cvimg正确地转换为张量,而不会导致任何颜色失真?我通过存储两幅图像进行了比较。一个使用tensorflow进行解码,另一个使用openCV进行解码Opencv 正确地将图像从cvimg转换为张量,opencv,tensorflow,Opencv,Tensorflow,有没有一种正确的方法可以将cvimg正确地转换为张量,而不会导致任何颜色失真?我通过存储两幅图像进行了比较。一个使用tensorflow进行解码,另一个使用openCV进行解码 使用tensorflow jpeg编码器生成的图像 file\u reader=tf.read\u文件(文件名,输入名) 如果文件名为.endswith(“.png”): image\u reader=tf.image.decode\u png( 文件读取器,通道=3,name=“png读取器”) elif文件名.en
使用tensorflow jpeg编码器生成的图像
file\u reader=tf.read\u文件(文件名,输入名)
如果文件名为.endswith(“.png”):
image\u reader=tf.image.decode\u png(
文件读取器,通道=3,name=“png读取器”)
elif文件名.endswith(“.gif”):
图像读取器=tf(
tf.image.decode\u gif(文件读取器,name=“gif\u读取器”))
elif文件名.endswith(“.bmp”):
image\u reader=tf.image.decode\u bmp(file\u reader,name=“bmp\u reader”)
其他:
image\u reader=tf.image.decode\u jpeg(
文件读取器,通道=3,name=“jpeg读取器”)
使用cv生成的图像转换为张量
image\u reader=tf.convert\u to\u tensor(cvimg)
在cv转换过程中,我是否遗漏了一些步骤?谢谢 OpenCV以BGR格式加载图像,而Tensorflow使用RGB格式(您可以看到图像的蓝色通道和红色通道被交换) 因此,如果您想读取使用OpenCV加载的图像(我想
cvimg
),只需将颜色通道从BGR切换到RGB即可:
image\u reader=tf.convert\u to\u tensor(cvimg)
b、 g,r=tf.unstack(图像读取器,轴=-1)
image_reader=tf.stack([r,g,b],轴=-1)
OpenCV以BGR格式加载图像,而Tensorflow使用RGB格式(您可以看到图像的蓝色和红色通道被交换)
因此,如果您想读取使用OpenCV加载的图像(我想cvimg
),只需将颜色通道从BGR切换到RGB即可:
image\u reader=tf.convert\u to\u tensor(cvimg)
b、 g,r=tf.unstack(图像读取器,轴=-1)
image_reader=tf.stack([r,g,b],轴=-1)
另一种方法是:
image_reader=tf.reverse(cvimg,axis=[-1])
tf.reverse
将反转指定维度的顺序。因为cvimg(opencv图像,[高度、宽度、通道])
是BGR格式,
因此tf.reverse(cvimg,axis=[-1])
将BGR(最后一个维度)反转为RGB,
您不必使用tf.convert_to_tensor(cvimg),因为tensorfow将自动从numpy数组转换为tensor。另一种方法是:
image_reader=tf.reverse(cvimg,axis=[-1])
tf.reverse
将反转指定维度的顺序。因为cvimg(opencv图像,[高度、宽度、通道])
是BGR格式,
因此tf.reverse(cvimg,axis=[-1])
将BGR(最后一个维度)反转为RGB,
您不必使用
tf.convert_to_tensor(cvimg)
,因为tensorfow将自动从numpy数组转换为tensor。您的代码看起来不完整。如何获取cvimg?啊,cvimg是从另一个模块传入的。这是一个BGR映像,显然您的代码看起来不完整。如何获取cvimg?啊,cvimg是从另一个模块传入的。这是一个BGR的形象,显然哦,谢谢!你是个救命恩人,我以为图像信息清楚地表明RGB和OpenCV不会在加载时将其转换为BGR。我的错。哦,谢谢!你是个救命恩人,我以为图像信息清楚地表明RGB和OpenCV不会在加载时将其转换为BGR。我的错。虽然这可能是一个有价值的输入,请添加一个解释谢谢你的建议。因为我的英语很差,我担心我的表达不清楚。虽然这可能是一个有价值的输入,但请补充解释谢谢你的建议。因为我的英语很差,我担心我的表达不清楚。