tensorflow讀取圖片時出現錯誤UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid s

明天也要加油鴨發表於2019-03-05

問題描述:tensorflow讀取圖片時出現錯誤UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid s

  • 系統版本:windows7 64位旗艦版 
  • tensorflow版本:tensorf 1.4.0
  • python版本:python 3.5.2
#coding:utf-8
import tensorflow as tf

import matplotlib.pyplot as plt

image =  tf.gfile.FastGFile('image/1.jpg','r').read()

with tf.Session() as sess:
    image = tf.image.decode_jpeg(image)
    print(image.eval())

    plt.imshow(image.eval())
    plt.show()

出現錯誤:File "E:/python_work/lab/6.py", line 6, in <module>
                 image =  tf.gfile.FastGFile('image/1.jpg','r').read()


問題分析:Python 3引入了用於開啟檔案的“r”和“rb”模式之間的區別。使用“r”模式將導致Python將檔案內容解釋為文字(在您的情況下(以及常見情況下)使用UTF-8編碼),但是錯誤訊息表明資料是二進位制格式(可能是某種基於變數名的影象格式)。改變程式碼使用模式“rb”應該可以解決這個問題,並在兩個版本的Python中工作:

image =  tf.gfile.FastGFile('image/1.jpg','rb').read()

參考:https://github.com/tensorflow/tensorflow/issues/11312

相關文章