Python对图像的读取及处理

一 读取:
(1)skimage.io.imread与cv2.imread都可以读取图像,且都是numpy格式,但cv2的存储格式是BGR,而skimage的存储格式是RGB。

(2)matplotlib:

import matplotlib.pyplot as plt #plt 用于显示图片

import matplotlib.image as mpimg   #mpimg 用于读取图片

import numpy as np

lena= mpimg.imread('lena.png')

matplotlib 读取的是 RGB 图
(3)PIL

from PIL import Image
im = Image.open('lena.png')
im.show()

PIL读取图片为Image对象,将 PIL Image 图片转换为 numpy 数组要用以下函数:

im_array = np.array(im)

二、图像数据类型以及转换:

  1. 一张图片就是一个简单的numpy数组,数组的数据类型有很多种,相互之间也可以转换。这些数据类型及取值范围如下表所示:


    image.png

一张图片的像素范围是[0, 255],所以类型是unit8,可以通过以下代码查看图像的数据类型:

  from skimage import io, data
  img = data.chelsea()
  print(img.dtype.name)

2, 转换
推荐使用skimage,实测很好用,不管图像深度是多少维。


image.png

三,矩阵
关于矩阵,本来不该放在图像中,但是考虑到图像就是矩阵(Everything is matrix),很多对图像的操作实际就是对矩阵的操作,因此一并记录:
主要是考虑矩阵的切片和索引:(亲自实践理解会更深刻,但总是会忘)
多维矩阵的话,最外边的大括号里的元素数量就是shape的第一个值。

你可能感兴趣的:(Python对图像的读取及处理)