Matplotlib-ImageTutorial

Import:

import matplotlib.pyplot as plt
import matplotlib.image as mpimg

函数方法:

1.从路径读取图片

img = mpimg.imread('/Users/xxx/Desktop/xxx.png')

2.显示图片

plt.imshow(img)

运行结果:
可选参数 cmap : 色彩图谱,一种颜色到另一种颜色的渐变

必须是单通道图 : 一个像素点一个值,非RGB三值

#RGB图转单通道
lum_imgR = img[ :, :, 0]  #R通道
lum_imgG = img[ :, :, 1]  #G通道
lum_imgB = img[ :, :, 2]  #B通道

hot: 黑-红-黄-白
nipy_spectral: 色温图
默认viridis: 紫-绿-黄
想改变已存在的图片的cmap,需要使用set_camp()函数:

imgplot = plt.imshow(lum_img)
imgplot.set_cmap('nipy_spectral')

运行结果:
显示 cmap 的颜色条:
imgplot = plt.imshow(lum_img)
plt.colorbar()
可选参数clim:颜色渲染范围
plt.imshow(lum_img),clim=(0.0, 0.7),cmap='nipy_spectral')
plt.colorbar()
可选参数interpolation : 显示模式(个人理解)
from PIL import Image
img = Image.open('/Users/xxx/Desktop/xxx.png')
img.thumbnail((64, 64), Image.ANTIALIAS) 
imgplot = plt.imshow(img)

通过 PIL来缩小图片使之出现像素块
运行结果:

imgplot = plt.imshow(img, interpolation="nearest")

nearest运行结果:

imgplot = plt.imshow(img, interpolation="bicubic")

bicubic运行结果:

3.色度分布统计

plt.hist(lum_img.ravel(), bins='auto', range=(0.0, 1.0))
  • ravel函数是 numpy 的函数: 将多维数组中的元素变成一个一维数组
In [1]:  n = np.array([[1,1,2],[3,4,5]])  
         n.ravel()

Out[1]:  array([1, 1, 2, 3, 4, 5])

hist()函数:

  • 第一个参数: 统计的像素的集合,是一个一维数组

  • bins: 将值范围分成bins个数,色度是连续量,bins就是显示的数字量,浮点型的会统计进最近的 数字量
    e.g: 0.0 - 1.0 , bins 取 5, 则分成[0.0-0.2], [0.2-0.4], [0.4-0.6], [0.6-0.8], [0.8-1.0],每个区间一个柱子
    当安装了numpy时, 可填写 'auto', 自动选取合适的值

  • range : 即范围, 统计的值的范围


欢迎关注我的博客Vagitus – Pythonista

你可能感兴趣的:(Matplotlib-ImageTutorial)