在使用tensorflow之前,需要将图片数据转换成tfrecord格式,转换完成之后出现了图片编码的错误如下:
由于不知道大小为227328字节的图片是哪一张,就用了一个笨办法处理了一遍图片,将编码出错的图片删除了。代码如下:
# coding=utf-8
import os
import tensorflow as tf
path = "***"
dirpath = "***"
files = os.listdir(path)
for name in files:
#读取图片
image = tf.gfile.FastGFile(os.path.join(path, name), 'rb').read() # 必须是 ‘rb’ 模式打开,否则会报错
#
with tf.Session() as sess:
print(name)
img_data = tf.image.decode_jpeg(image)
# 数据类型转换为实数方便程序对图像进行处理
img_data = tf.image.convert_image_dtype(img_data, dtype=tf.float32)
img_data = tf.image.convert_image_dtype(img_data, dtype=tf.uint8)
# 将表示一张图片的三维矩阵重新按照 jpeg 格式编码并存入文件中
## 打开这张图像,可以得到和原始图像一样的图像
encoded_image = tf.image.encode_jpeg(img_data)
with tf.gfile.GFile(os.path.join(dirpath, name), 'wb') as f:
f.write(encoded_image.eval())
将不能进行jpeg解码和编码的图片删除了。不知道各位大神有没有遇到过这种问题,有什么好的解决办法吗?