同じ画像ファイルをPillow とOpenCV でそれぞれ読み込み、 一致しているか確認する処理を書きました。
import cv2 import numpy as np from PIL import Image def is_equal(cv_img, pil_img): return np.array_equal(cv_img, np.asarray(pil_img.convert('RGB'))[:, :, ::-1]) if __name__ == '__main__': img_file = 'test.png' cv_img = cv2.imread(img_file) pil_img = Image.open(img_file) print(is_equal(cv_img, pil_img))
結果
True
2つのNumpy の配列が等しいかは、numpy.array_equal 関数を使用します。
また、Pillow のImage オブジェクトをNumpy の配列に変換するには、numpy.asarray 関数を使用します。
ただしこれらの関数に読み込んだデータを直接入れてもFalse が帰ってきますので、
色情報が揃うようにpillow で読み込んだデータを変換します。