报错

img = tf.contrib.image.transform(img, M, interpolation='BILINEAR')
plt.imshow(img)
plt.show()

TypeError: Image data of dtype object cannot be converted to float

分析

“Image data of dtype object” 这个错误信息通常出现在处理图像时,特别是使用matplotlib.pyplot.imshow()函数时。它表明图像的数据类型被解释为Python的object类型,而不是预期的数值类型(例如uint8、float32等)。

出现这个错误的原因可能是由于加载图像时出现了问题,导致图像数据的类型被误解释为object类型,而不是常见的图像数据类型。

通常,正确的图像数据类型是无符号整数(uint8)或浮点数(float32)类型,这取决于图像的像素值范围。uint8表示无符号8位整数,像素值范围为0到255,用于表示灰度图像或RGB图像中的颜色通道。而float32表示单精度浮点数,像素值范围为0.0到1.0或其他范围,用于表示像素值在0到1之间的浮点型图像。

问题代码中,img是一个tensor,而非numpy.ndarray,因此无法使用plt显示。

解决

将tensor张量转换为numpy数组

with tf.Session() as sess:
    img= img.eval()
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐