記事の目的
f.readで読み込んでからのファイル形式の理解が深まる
準備するもの
画像データを適当にとってきて、filename = のところを書き換えたら使えます
import matplotlib.pyplot as plt
import numpy as np
import cv2
# 型確認のための汎用メソッド
def showDetail(obj,name):
obj_type = type(obj)
print(f"type({name})",obj_type)
if obj_type == np.ndarray:
print(f"{name}.shape",obj.shape)
filename = 'images/testImage.jpg'
# Read image into memory
payload = None
with open(filename, 'rb') as f:
payload = f.read()
showDetail(payload,"payload") # type(payload) <class 'bytes'>
frombuff = np.frombuffer(payload, dtype='uint8') # byteをnumpyにしている(1次元)
showDetail(frombuff,"frombuff") # frombuff.shape (3002800,)
input_data = cv2.imdecode(frombuff, cv2.IMREAD_UNCHANGED) # numpyを画像の形式にdecodeしている。
showDetail(input_data,"input_data") # input_data.shape (2565, 3500, 3)
plt.imshow(input_data)
plt.show()