🐶
画像データ 型変換 【Python】
概要
Pythonにて画像データを扱うとき、「numpy(opencv)」「pillow」「byte」にて扱うことがある。それぞれの型変換させるための備忘録。
qiitaの記事を移行。
numpy -> bytes
_, num_bytes = cv2.imencode('.jpeg', num_numpy)
num_bytes = num_bytes.tobytes()
numpy -> pil
num_pil = Image.fromarray(num_numpy)
pil -> bytes
num_byteio = io.BytesIO()
num_byteio.save(num_pil, format='png')# 仮にpngにしている
num_bytes = num_byteio.getvalue()
試してないけど、以下でのできるらしい。
Image module内にtobyte()関数があるみたいだけど、上のスニペットがなぜか多い。
上だとフォーマット指定もできるからかもしれない。
num_bytes = num_pil.tobyte()
pil -> numpy
num_numpy = np.asarray(num_pil)
bytes -> numpy
num_byteio = io.BytesIO(num_bytes)
with Image.open(num_byteio) as img:
num_numpy = np.asarray(img)
bytes -> pil
num_byteio = io.BytesIO(num_bytes)
num_pil = Image.open(num_byteio)
Discussion