NumPy
NumPy是Python科学计算工具包,其数组对象可以用于矩阵乘积,转置,解方程系统,向量乘积和归一化操作。
图像数组表示
输出图像数组的大小和数组的数据类型。
未处理的图像有三个颜色通道rgb,灰度图像r=g=b
下面是这部分的操作:
# -*-coding:utf-8 -*-
from PIL import Image
from numpy import *
#array()方法将图像转换成NumPy的数组对象
im = array(Image.open("/home/xuna/桌面/image/test.jpg"))
print im.shape, im.dtype
#访问坐标为(0,0)通道为1的像素值
r = im[0,0,0]
g = im[0,0,1]
b = im[0,0,2]
print (r,g,b)
"""
运行结果
(300, 510, 3) uint8
(0, 157, 222)
(300, 510, 3):数组的大小(行,列,颜色通道(1,2,3:rgb))
uint8 :数据类型(通常为无符号八位整数)
"""
#灰度图像
im = array(Image.open("/home/xuna/桌面/image/test.jpg").convert('L'),'f')
r = g = b = im[0,0]
print (r,g,b)
"""
多个数组元素切片访问常用
im[i,:] = im[j,:] #将第j行的数值赋值给第i行
im[:,i]=100 #将第i列的所有数值设为100
im[:100,:50].sum() #计算前100行,前50列所有数值的和
im[50:100,50:100] # 50~100行,50~100列(不包含第100行和第100列)
im[i].mean() #第i行所有数值的平均值
im[:,-1] #最后一列
im[-2,:](or im[-2]) #倒数第二行
"""
print im.shape, im.dtype
"""
运行结果
(300, 510) float32
(300,510):灰度处理,只有两个参数
float32:参数f将默认的uint8转换为浮点型
(117.0, 117.0, 117.0)
"""