在使用Python进行图像处理时,毫无疑问第一件事就是读取图像。Python开源社区创造了大量的库,为Python的使用带来的很多的便利。就读取图像一事,就有多个库提供了imread
方法。但在之前使用时,从来没有对它们之间的异同进行深入地考虑过,都是拿来即用。偶然的一次尝试,发现这些方法之间好像确实存在一些不同。
opencv-python
imread
API定义
1 2 3 4
| retval = cv.imread(filename[, flags])
|
使用 cv.imread() 函数读取一张图像,图片应该在工作目录中,或者应该提供完整的图像路径。
第二个参数是一个 flag,指定了应该读取图像的方式
Note
- 你可以简单地分别传递整数 1、0 或-1,而不是这三个 flag。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
import cv2 import numpy as np
img_path = '../datasets/lenna/lena_std.jpg' img = cv2.imread(img_path)
print(type(img)) print(img.shape)
cv2.imshow("lenna", img) cv2.waitKey(0)
print(img)
|
1
| img2 = cv2.cvtColor(img , cv2.COLOR_BGR2RGB)
|
1 2
| b,g,r = cv2.split(img) img2 = cv2.merge([r,g,b])
|
matplotlib.pyplot
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
import matplotlib.pyplot as plt
img_path = '../datasets/lenna/lena_std.jpg' img = plt.imread(img_path)
print(type(img)) print(img.shape)
print(img)
plt.imshow(img) plt.show()
|
后面的几种方法都可以用plt.imshow()
方法进行图像的显示。
matplotlib.image
1 2 3 4 5 6 7 8 9 10 11 12 13
|
import matplotlib.image as matimage
img_path = '../datasets/lenna/lena_std.jpg' img = matimage.imread(img_path)
print(type(img)) print(img.shape)
print(img)
|
imageio
1 2 3 4 5 6 7 8 9 10 11 12 13
|
import imageio.v2 as imageio
img_path = '../datasets/lenna/lena_std.jpg' img = imageio.imread(img_path)
print(type(img)) print(img.shape)
print(img)
|
Pillow
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
from PIL import Image import numpy as np
img_path = '../datasets/lenna/lena_std.jpg' img = Image.open(img_path)
print(type(img))
img = np.array(img) print(type(img)) print(img.shape)
print(img)
|
skimage
1 2 3 4 5 6 7 8 9 10 11 12 13
|
import skimage.io as io
img_path = '../datasets/lenna/lena_std.jpg' img = io.imread(img_path)
print(type(img)) print(img.shape)
print(img)
|
scipy
scipy中的imread已经被移除了!
1 2 3 4 5 6 7 8 9
|
import scipy.misc as misc
img_path = '../datasets/lenna/lena_std.jpg' img = misc.imread(img_path)
|
1 2 3 4 5 6 7 8 9
|
import scipy.ndimage as spyimage
img_path = '../datasets/lenna/lena_std.jpg' img = spyimage.imread(img_path)
|
参考