图像处理基础 || (二) 彩色图像转灰度图像

彩色图像转灰度图像

文章目录

  • 彩色图像转灰度图像
    • 1. 利用scikit-image将彩色图像转化成灰度图像
    • 2. 利用 Pillow 库完成彩色图像中灰度图像的逐层提取
    • 3. 利用 Pillow 库完成彩色图像到灰度图像的转变
    • 4. 利用 matplotlib 库将彩色图像转化为灰度图像

由于图像处理中的诸多技术如卷积、傅立叶变换、特征值分解等操作均是针对灰度图像,所以如何将彩色图像转化为灰度图像是常用的基本操作。在python中使用不同的库进行此操作的方式也不相同,本部分内容旨在整理出常用的图像处理库中的此类操作。

本部分内容所用的数据放在百度网盘:

链接: https://pan.baidu.com/s/1DXKTofRWufhVpP_HEQKk9A 提取码: pl5u

下载到本地,置于代码文件同级目录的新建文件夹“images”即可。

1. 利用scikit-image将彩色图像转化成灰度图像

from skimage.io import imread
from skimage.color import rgb2gray
import matplotlib.pylab as plt

im = imread("images/parrot.png")
im_g = rgb2gray(im)
#print(im.shape)

plt.figure(figsize=(10,10))
plt.subplot(121)
plt.imshow(im, cmap='gray')
plt.axis('off')
plt.subplot(122)
plt.imshow(im_g, cmap='gray')
plt.axis('off')
plt.show()

图像处理基础 || (二) 彩色图像转灰度图像_第1张图片

2. 利用 Pillow 库完成彩色图像中灰度图像的逐层提取

from PIL import Image
import matplotlib.pyplot as plt

image = Image.open('images/parrot.png') #open image
r, g, b = image.split()

plt.figure(figsize=(10,8))
plt.subplot(2,2,1), plt.imshow(image),plt.axis('off'),plt.title('Origin')
plt.subplot(2,2,2), plt.imshow(r,cmap='gray'),plt.axis('off'),plt.title('R Channel')
plt.subplot(2,2,3), plt.imshow(g,cmap='gray'),plt.axis('off'),plt.title('G Channel')
plt.subplot(2,2,4), plt.imshow(b,cmap='gray'),plt.axis('off'),plt.title('B Channel')
plt.show()

图像处理基础 || (二) 彩色图像转灰度图像_第2张图片

3. 利用 Pillow 库完成彩色图像到灰度图像的转变

from PIL import Image
import matplotlib.pyplot as plt

image = Image.open('images/parrot.png') #open image
imgage_g = image.convert('L')

plt.figure(figsize=(10,8))
plt.subplot(1,2,1), plt.imshow(image),plt.axis('off'),plt.title('Origin')
plt.subplot(1,2,2), plt.imshow(r,cmap='gray'),plt.axis('off'),plt.title('gray image')
plt.show()

图像处理基础 || (二) 彩色图像转灰度图像_第3张图片

4. 利用 matplotlib 库将彩色图像转化为灰度图像

import matplotlib.pylab as plt
import matplotlib.image as mpimg

im = mpimg.imread("images/parrot.png")
im_g = im[:,:,0]

plt.figure(figsize=(10,8))
plt.subplot(1,2,1), plt.imshow(im),plt.axis('off'),plt.title('Origin')
plt.subplot(1,2,2), plt.imshow(im_g,cmap='gray'),plt.axis('off'),plt.title('gray image')
plt.show()

图像处理基础 || (二) 彩色图像转灰度图像_第4张图片
或者通过求均值的方式获取灰度图像

from matplotlib.image import imread

im = np.mean(imread('images/parrot.png'), axis=2) # 通过求每个像素向量的均值获得灰度图像
print(im.shape)
plt.imshow(im,cmap='gray')
plt.axis('off')
plt.show()

图像处理基础 || (二) 彩色图像转灰度图像_第5张图片

你可能感兴趣的:(Python,图像处理基础,图像处理,计算机视觉,python)