Oxford-IIIT Pet Datasetをダウンロードして使用しましたが、トライマップでした。
これは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)
効果: