下载了牛津的数据集(The Oxford-IIIT Pet Dataset)进行使用,无奈却是trimaps
这个又没法直接用tf读取
也试了PIL:
最好还是在https://stackoverflow.com/questions/41777654/opencv-using-a-trimap-image找到答案
代码如下:
import io
import os
import tensorflow as tf
import PIL
import matplotlib.pyplot as plt
import numpy as np
with tf.gfile.GFile("Abyssinian_1.png", 'rb') as fid:
encoded_mask_png = fid.read()
encoded_png_io = io.BytesIO(encoded_mask_png)
mask = PIL.Image.open(encoded_png_io)
plt.imshow( np.array(mask) / 2 * 255 )
效果如下:
进而读取的数据是可以变成数组了:
import io
import os
import tensorflow as tf
import PIL
import matplotlib.pyplot as plt
import numpy as np
with tf.gfile.GFile("Abyssinian_1.png", 'rb') as fid:
encoded_mask_png = fid.read()
encoded_png_io = io.BytesIO(encoded_mask_png)
mask = PIL.Image.open(encoded_png_io)
np.array(mask)
效果: