python imread函数_各种图像处理库中imread函数的区别

#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( )

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值