1.用matplotlib读取图片
import matplotlib.image as mpimg#读取图片
import matplotlib.pyplot as plt #显示图片
%matplotlib inline
image = mpimg.imread('./images/cat.png')
plt.title('Read Image by Matplotlib')
plt.axis('off')# 不显示坐标轴
plt.imshow(image)
plt.show()
2.用opencv读取图片
import cv2
import matplotlib.pyplot as plt
image = cv2.imread('./images/cat.png')
plt.title('Read Image by Opencv')
plt.axis('off')
plt.imshow(image)
plt.show()
这里发现展示的图片颜色不对,和原图出现了很大的区别。原因是opencv对于 RGB 图片是将其表示为一个多维的NumPy的多维数组,但排列顺序是反序的,也就是BGR 的顺序,因此这里需要对通道顺序进行调整,代码应该这么修改:
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
修改代码如下:
import cv2
import matplotlib.pyplot as plt
image = cv2.imread('./images/cat.png')
plt.title('Read Image by Opencv')
plt.axis('off')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.show()
3.用PIL读取图片
from PIL import Image
import matplotlib.pyplot as plt
image = Image.open('./images/cat.png')
plt.title('Read Image by PIL')
plt.axis('off')
plt.imshow(image)
plt.show()
4.总结
读取图片的方式有3种,分别是matplotlib读取图片、opencv读取图片和PIL读取图片。在读取图片后,统一使用matplotlib工具包显示图片。其中需要注意的是opencv读取图片的情况,读取的图片是BGR通道排序,需要转为RGB通道。
matplotlib的使用:
- plt.imshow(image)如果没有显示图片,在其后面加上plt.show()
- 绘制多图可用subplot函数。函数原型为subplot(nrows, ncols, index, **kwargs),nrows 代表有多少行, ncols代表有多少列 , index 窗口编号,取值为1至nrows × ncolums
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import cv2
from PIL import Image
plt.subplot(1, 3, 1)
image = mpimg.imread('./images/cat.png')
plt.title('Matplotlib')
plt.axis('off')
plt.imshow(image)
plt.subplot(1, 3, 2)
image = cv2.imread('./images/cat.png')
plt.title('Opencv')
plt.axis('off')
plt.imshow(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
plt.subplot(1, 3, 3)
image = Image.open('./images/cat.png')
plt.title('PIL')
plt.axis('off')
plt.imshow(image)
plt.show()
版权声明:本文为博主暄踽原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/weixin_46003347/article/details/123228638