使用 scipy.misc.imread 读取的图片数据是 RGB 格式;
使用 cv2.imread 读取的图片数据是 BGR 格式;
使用 PIL.Image.open 读取的图片数据是RGB格式;
58 import cv2
59 from PIL import Image
61 img = cv2.imread("/tmp-data/caihuanqia/compare/source/235.jpg")
62 print("cv2:", img.shape)
63 img2 = Image.open("/tmp-data/caihuanqia/compare/source/235.jpg")
对于单通道的图片:
可以看出Image读取就是默认的单通道,但是cv2会默认转化围为3通道,并且数值也变了。需要加上cv2.IMREAD_UNCHANGED,即cv2.imread(“ceshi.png”,cv2.IMREAD_UNCHANGED)
4 pil = Image.open("ceshi.png")
5 cv = cv2.imread("ceshi.png")
6 pil2cv2 = np.array(pil)
7 print("cv2.shape:", cv.shape)
8 print("pil:", pil2cv2.shape)
(‘cv2.shape:’, (2048, 2048, 3))
(‘pil:’, (2048, 2048))
加上cv2.imread(“ceshi.png”,cv2.IMREAD_UNCHANGED)
58 import cv2
59 from PIL import Image
60 import numpy as np
61 time1 = time.time()
62 img = cv2.imread("/tmp-data/caihuanqia/compare/source/235.jpg")
63 print("cv2:", img.shape)
64 img2 = Image.open("/tmp-data/caihuanqia/compare/source/235.jpg")
65 #img2.convert("RGB")
66 print("PIL:", img2.size)
67 print("PIL2cv:", np.array(img2).shape)
区别也就是在读取的时候,cv2是BGR,PIL是RGB.