Python 为什么调整图像大小最终也会改变频道?

Python 为什么调整图像大小最终也会改变频道?,python,tensorflow,opencv,tensorflow2.0,Python,Tensorflow,Opencv,Tensorflow2.0,因此,我在python中使用TensorFlow编写了这段代码,它可以打开一个图像并调整其大小: def parse_图像(文件名): 标签=文件名 image=tf.io.read_文件(路径+'/'+文件名) 打印(图像.形状) image=tf.image.decode\u png(图像) image=tf.image.convert\u image\u数据类型(image,tf.float32) image=tf.image.resize(图像[340340]) 打印(图像.形状) 返回

因此,我在python中使用TensorFlow编写了这段代码,它可以打开一个图像并调整其大小:

def parse_图像(文件名):
标签=文件名
image=tf.io.read_文件(路径+'/'+文件名)
打印(图像.形状)
image=tf.image.decode\u png(图像)
image=tf.image.convert\u image\u数据类型(image,tf.float32)
image=tf.image.resize(图像[340340])
打印(图像.形状)
返回图像、标签
使用OpenCV打开测试灰度图像时:

img=cv2.imread(path+“/test.png”)
打印(图像形状)#返回(21333219,3)
但当我在同一个图像上调用上述函数时:

image,label=parse_image('test.png'))
打印(图像.形状)#返回(340340,1)

我知道340 x 340是我刚设置的宽度和高度,但为什么通道会改变?我试图计算结构相似性,但是测试图像和我想要比较的图像有不同的通道,这会产生错误。最糟糕的是,这是一个特定的测试图像。其他灰度图像可以正常工作。

调整大小(图像[340340])
您可能需要在此处指定第三维。我只是随口吐痰,但我能想象出,未指定尺寸的物体应该在default@PaulH我试过了,但出现了一个错误。查看文档,它说:size=2个元素的1-dInt32张量:新高度,新宽度。图像的新大小。请确认
decode\u png
(但在
resize
之前)后的形状包含三个通道。@xdurch0否,它仍然是一个通道。但是对于这个特定的测试图像。我测试的另一个灰度图像有3个通道。@locke那么问题在于
decode\u png
,而不是
resize
。注意
decode\u png
支持可以指定的
channels
参数(尝试设置为3)。