《Python 计算机视觉编程》学习笔记(一)

第 1 章 基本的图像操作和处理

1.1 PIL: Python图像处理类库

PIL(Python Imaging Library Python,图像处理类库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。

图像读取、显示、显示对应灰度图
1.1.1 转换图像格式

例:

from PIL import Image

image = Image.open('远景.jpg')

image.save(‘远景’.jpg')

save():将图像保存成多种格式文件

(PIL会进行检查,将不是JPEG的文件自动转换为JPEG)

1.1.2 创建缩略图

1.1.3 复制和粘贴图像区域

1.1.4 调整尺寸和旋转

1.2 Matplotlib

我们处理数学运算、绘制图表,或者在图像上绘制点、直线和曲线时,Matplotlib是个很好的类库,具有比PIL更强大的绘图功能。

1.2.1 绘制图像、点和线
1.2.2 图像轮廓和直方图
1.2.3 交互式标注

1.3 NumPy

NumPy(http://www.scipy.org/NumPy/)是非常有名的Python科学计算工具包,其中包含了大量有用的思想,比如数组对象(用来表示向量、矩阵、图像等)以及线性代数函数。NumPy中的数组对象几乎贯穿用于本书的所有例子中1数组对象可以帮助你实现数组中重要的操作,比如矩阵乘积、转置、解方程系统、向量乘积和归一化,这为图像变形、对变化进行建模、图像分类、图像聚类等提供了基础。

1.3.1 图像数组表示

每行的第一个元组表示图像数组的大小(行、列、颜色通道),紧接着的字符串表示数组元素的数据类型。因为图像通常被编码成无符号八位整数(uint8),所以在第一种情况下,载入图像并将其转换到数组中,数组的数据类型为“uint8”。在第二种情况下,对图像进行灰度化处理,并且在创建数组时使用额外的参数;该参数将数据类型转换为浮点型。

1.3.2 灰度变换
1.3.3 图像缩放

def imresize(im,sz):

"""使用PIL对象重新定义图像数组的大小"""

pil_im = Image.fromarray(uint8(im))

return array(pil_im.resize(sz))

1.3.4 直方图均衡化

def histeq(im,nbr_bins=256):

"""对一幅灰度图像进行直方图均衡化"""

#计算图像的直方图

imhist,bins = histogram(im.flatten(),nbr_bins,normed=True)

cdf = imhist.cumsum() # cumulative distribution function

cdf = 255 * cdf / cdf[-1] # 归一化

# 使用累积分布函数的线性插值,计算新的像素值

im2 = interp(im.flatten(),bins[:-1],cdf)

return im2.reshape(im.shape), cdf

from PIL import Image

from numpy import *

im = array(Image.open('C:\\Users\\psen2\\Pictures\\Camera Roll\\1.jpg').convert('L'))

im2,cdf = imtools.histeq(im)

1.3.5 图像平均

def compute_average(imlist):

"""计算图像列表的平均图像"""

# 打开第一幅图像,将其存储在浮点型数组中

averageim = array(Image.open(imlist[0]), 'f')

for imname in imlist[1:]:

try:

averageim += array(Image.open(imname))

except:

print( imname + '...skipped')

averageim /= len(imlist)

# 返回uint8类型的平均图像

return array(averageim, 'uint8')

1.4 SciPy

SciPy(http://scipy.org/)是建立在NumPy基础上,用于数值运算的开源工具包。SciPy提供很多高效的操作,可以实现数值积分、优化、统计、信号处理,以及对我们来说最重要的图像处理功能。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值