#encoding=utf8
from PIL import Image
from scipy import misc, ndimage
import imageio
import numpy as np
import cv2
import matplotlib
import matplotlib.pyplot as plt
import skimage
import sys
from skimage import io
%matplotlib inline
%config InlineBackend.figure_format = 'retina'
def display(imagepath):
# PIL
im_PIL = Image.open(imagepath)
print("PIL type1", type(im_PIL))
im_PIL = np.array(im_PIL)# PIL 方法读取后需要通过转换获得numpy对象,RGB
print("PIL type2", type(im_PIL))
print("PIL shape", im_PIL.shape)
print("PIL min{}max{}".format(im_PIL.min(), im_PIL.max()))
# imageio
im_imageio = imageio.imread(imagepath)
print("imageio type", type(im_imageio))
print("imageio shape", im_imageio.shape)
print("imageio min{}max{}".format(im_imageio.min(), im_imageio.max()))
# # scipy.ndimage
# im_scipy_ndimage = imageio.imread(imagepath)
# print(type(im_scipy_ndimage))
# print(im_scipy_ndimage.shape)
# matplotlib
im_matplotlib = plt.imread(imagepath)
print("matplotlib type", type(im_matplotlib))
print("matplotlib shape", im_matplotlib.shape)
print("matplotlib min{}max{}".format(im_matplotlib.min(), im_matplotlib.max()))
# cv2
im_cv2=cv2.imread(imagepath)
print("cv2 type", type(im_cv2))
print("cv2 shape", im_cv2.shape)
print("cv2 min{}max{}".format(im_cv2.min(), im_cv2.max()))
# skimge
im_skimge = io.imread(imagepath)
print("skimge type", type(im_skimge))
print("skimge shape", im_skimge.shape)
print("skimge min{}max{}".format(im_skimge.min(), im_skimge.max()))
# cv2.imshow('test',im4)
# cv2.waitKey()
#统一使用plt进行显示,不管是plt还是cv2.imshow,在python中只认numpy.array,但是由于cv2.imread 的图片是BGR,cv2.imshow 时相应的换通道显示
plt.figure(figsize=(6,9))
plt.subplot(321)
plt.title('PIL read')
plt.imshow(im_PIL)
plt.subplot(322)
plt.title('imageio read')
plt.imshow(im_imageio)
plt.subplot(324)
plt.title('matplotlib read')
plt.imshow(im_matplotlib)
plt.subplot(325)
plt.title('cv2 read')
plt.imshow(im_cv2)
plt.subplot(326)
plt.title('skimge read')
plt.imshow(im_skimge)
plt.tight_layout()
plt.show()
print(np.allclose(im_imageio, im_PIL))
try:
print(np.allclose(im_imageio, im_cv2))
print(np.allclose(im_imageio, im_cv2[:,:,::-1]))
except ValueError as e:
print(e)
print(np.allclose(im_imageio, im_matplotlib))
print(np.allclose(im_imageio, im_skimge))
return im_PIL, im_imageio, im_cv2, im_matplotlib, im_skimge
# try:
# print(np.array_equal(im_PIL, im_imageio, im_cv2, im_matplotlib, im_skimge))
# except ValueError as e:
# print(e)
# print( )