Tensorflow图像解码 UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start

时间:2021-08-15 20:53:15
import matplotlib.pyplot as plt
import tensorflow as tf

#读取图像的原始数据
image_raw_data=tf.gfile.FastGFile("./path/to/picture/timg.jpg",'rb').read()

with tf.Session() as sess:
#将图像用jpeg格式解码从而得到图像对应的三维矩阵,Tensorflow 还提供了tf.image_decode_png 函数对png格式的图像
#机械性解码。解码之后的结果为一个张量
img_data=tf.image.decode_jpeg(image_raw_data)

print(img_data.eval())
#使用pyplot工具可视化得到的图像
plt.imshow(img_data.eval())
plt.show()

#将数据的类型转化为实数,方便下面的程序进行处理
img_data=tf.image.convert_image_dtype(img_data,dtype=tf.float32)

#将表示一张图片的三维矩阵重新按照jpeg的格式编码存入文件中
encode_image=tf.image.encode_jpeg(img_data)
with tf.gfile.GFile('./path/to/picture/timg_output','wb') as f:
f.write(encode_image.eval())

注意其中:
image_raw_data=tf.gfile.FastGFile(“./path/to/picture/timg.jpg”,‘rb’).read()