Python各类图像库的图片读写方式总结(3)

Python各类图像库的图片读写方式总结

#最后以一个综合例子总结matplotlib最基本的图片显示技巧吧 im_lol1 = plt.imread('lol.jpg') im_lol2 = plt.imread('1.jpg') figure = plt.figure(figsize=(20,10)) # 调整显示图片的大小 ''' figsize参数:指定绘图对象的宽度和高度,单位为英寸;dpi参数指定绘图对象的分辨率, 即每英寸多少个像素,缺省值为80。因此本例中所创建的图表窗口的宽度为8*80 = 640像素 ''' plt.axis("off")#不显示刻度 ax = figure.add_subplot(121) # 图片以1行2列的形式显示 plt.axis('off') ax.imshow(im_lol1) #第一张图 ax.set_title('lol image 1')#给图片加titile ax = figure.add_subplot(122) plt.axis('off') ax.imshow(im_lol2) ax.set_title('lol image 2')#给图片加titile plt.savefig('twp.jpg') plt.show()

Python各类图像库的图片读写方式总结

scipy.misc:scipy.misc.imread from scipy import misc import matplotlib.pyplot as plt im = misc.imread('1.jpg') print(im.dtype) print(im.size) print(im.shape) misc.imsave('misc1.png',im) plt.imshow(im) plt.show() print(im)

Python各类图像库的图片读写方式总结

Python各类图像库的图片读写方式总结

可以看到,有warining,提示我们imread和imsave在后来的版本将会被弃用,叫我们使用imageio.imread和imageio.imwrite。

我们根据她的提示,使用imageio模块进行图片读写,warning也就没有了。

import imageio im2 = imageio.imread('1.jpg') print(im2.dtype) print(im2.size) print(im2.shape) plt.imshow(im) plt.show() print(im2) imageio.imsave('imageio.png',im2)

Python各类图像库的图片读写方式总结

skimage:skimage.io.imread from skimage import io im = io.imread('1.jpg') print(im.shape) # numpy矩阵,(h,w,c) print(im.dtype) print(im.size) io.imshow(im) io.imsave('sk.png',im) print(im)

Python各类图像库的图片读写方式总结

图像也是以numpy array形式读入。

灰度图的获取方式:

im2 = io.imread('1.jpg',as_grey=True) #读入灰度图 print(im2.dtype) print(im2.size) print(im2.shape) io.imshow(im2) io.imsave('sk_gray.png',im2) io.show() print(im2)

Python各类图像库的图片读写方式总结

可以看到,灰度图像的矩阵的值被归一化了,注意注意!

也可以以这种方式获得灰度图:

from skimage import color im3 = io.imread('1.jpg') im3 = color.rgb2grey(im3) print(im3.dtype) print(im3.size) print(im3.shape) io.imshow(im3) io.show() ''' skimage.color.rgb2grey(rgb) skimage.color.rgb2hsv(rgb) skimage.color.rgb2lab(rgb) skimage.color.gray2rgb(image) skimage.color.hsv2rgb(hsv) skimage.color.lab2rgb(lab) '''

Python各类图像库的图片读写方式总结

总结

除了opencv读入的彩色图片以BGR顺序存储外,其他所有图像库读入彩色图片都以RGB存储。

除了PIL读入的图片是img类之外,其他库读进来的图片都是以numpy 矩阵。

各大图像库的性能,老大哥当属opencv,无论是速度还是图片操作的全面性,都属于碾压的存在,毕竟他是一个巨大的cv专用库。下面那张图就是我从知乎盗来的一张关于各个主流图像库的一些性能比较图,从测试结果看来,opencv确实胜出太多了。

Python各类图像库的图片读写方式总结

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/d043288479101f8ef2eeb1b80079b7ae.html