# -*- coding: utf-8 -*-
"""
Created on Sat Jan 14 18:57:51 2017
@author: BruceLau1256
"""
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np
yuna = mpimg.imread('yuna.jpg') # 读取和代码处于同一目录下的 yuna.jpg
# 此时 yuna 就已经是一个 np.array 了,可以对它进行任意处理
yuna.shape #(258, 258, 3)
plt.subplot(231)
plt.imshow(yuna) # 显示图片
plt.title('origin')
plt.axis('off') # 不显示坐标轴
yuna_r = yuna[:,:,0]
yuna_g = yuna[:,:,1]
yuna_b = yuna[:,:,2]
plt.subplot(232)
plt.imshow(yuna_r)
plt.title('yuna_r')
plt.subplot(233)
plt.imshow(yuna_g)
plt.title('yuna_g')
plt.subplot(234)
plt.imshow(yuna_b)
plt.title('yuna_b')
#matplotlib 中没有合适的函数可以将 RGB 图转换为灰度图,可以根据公式自定义一个:
import matplotlib.pyplot as plt # plt 用于显示图片
import matplotlib.image as mpimg # mpimg 用于读取图片
import numpy as np
yuna = mpimg.imread('yuna.jpg') # 读取和代码处于同一目录下的 yuna.jpg
def rgb2gray(rgb):
return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])
gray = rgb2gray(yuna)
plt.subplot(235)
plt.imshow(gray, cmap = plt.get_cmap('gray'))
plt.title('gray')
# PIL方法转换灰度图
#from PIL import Image
#from pylab import *
##读取图片,灰度化,并转为数组
#yuna_gray = np.array(Image.open('yuna.jpg').convert('L'))
#plt.subplot(235)
#plt.imshow(yuna_gray)
#plt.title('yuna_gray')
#gray()
参考文献:
1. http://www.cnblogs.com/yinxiangnan-charles/p/5928689.html
2. http://www.jb51.net/article/78762.htm
注意 这里采用 matplotlib.image 读入图片数组,注意这里读入的数组是 float32 型的,范围是 0-1,而 PIL.Image 数据是 uinit8 型的,范围是0-255,所以要进行转换。