python计算机视觉编程——第一章 基本图像操作和处理

学习python计算机视觉编程,首先就要了解一下图像处理的一些基础知识,本文结合实例介绍一些图像处理的基础知识,如:读取图像、灰度变换、图像转换和缩放、PCA等,包含PIL、Matplotlib、NumPy库和SciPy模块。下面让我们一起来学习一下吧!

注:博主所用的是win10+python2.7

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

1.1 PIL:Python图像处理类库

1.1.1 转换图像格式——save()方法

1.1.2 创建缩略图——thumbnail()方法

1.1.3 拷贝并粘贴区域——crop()方法

1.1.4 调整尺寸及旋转——rotate()方法

1.2 Matplotlib库

1.2.1 画图、描点和线

1.2.2 图像轮廓和直方图

1.2.3 交互注释——ginput()函数

1.3 NumPy库

1.3.1 图像数组表示

1.3.2 灰度变换

1.3.3 直方图均衡化

1.3.4 图像平均

1.3.5 对图像进行主成分分析

1.4 SciPy模块

1.4.1 图像模糊

1.4.2 图像差分

1.5 更高级的例子:图像降噪


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

1.1 PIL:Python图像处理类库

PIL(Python Imaging Library,图像处理库)提供了通用的图像处理功能,以及大量有用的基本图像操作,比如图像缩放、裁剪、旋转、颜色转换等。PIL库下载地址[www.pythonware.com/products/pil/]

下面举一个利用PIL读取图像的例子:

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *

# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()

pil_im = Image.open('d:/Eating.jpg')
gray()
subplot(121)
title(u'原图',fontproperties=font)
axis('off')
imshow(pil_im)

pil_im = Image.open('d:/Eating.jpg').convert('L')#将图像转化成灰度图
subplot(122)
title(u'灰度图',fontproperties=font)
axis('off')
imshow(pil_im)

show()

1.1.1 转换图像格式——save()方法

利用save()方法,PIL可以将图片保存为很多不同的图像格式。

下面举一个将一个文件夹的jpg图像转换成png图像的例子:

from PCV.tools.imtools import get_imlist #导入原书的PCV模块
from PIL import Image
import os
import pickle

filelist = get_imlist('D:/test/test1') #获取D:/test/test1文件夹下的图片文件名(包括后缀名)
imlist = file('D:/test/imlist.txt','w') #将获取的图片文件列表保存到imlist.txt中
pickle.dump(filelist,imlist) #序列化
imlist.close()

for infile in filelist:
    outfile = os.path.splitext(infile)[0] + ".png" #分离文件名与扩展名
    if infile != outfile:
        try:
            Image.open(infile).save(outfile)
        except IOError:
            print ("cannot convert"), infile


1.1.2 创建缩略图——thumbnail()方法

利用PIL可以很容易的创建缩略图,设置缩略图的大小,并用元组保存起来,调用thumnail()方法即可生成缩略图。

1.1.3 拷贝并粘贴区域——crop()方法

调用crop()方法即可从一幅图像中进行区域拷贝,拷贝出区域后,可以对区域进行旋转等变换。。

1.1.4 调整尺寸及旋转——rotate()方法

要对一幅图像的尺寸进行调整,可以调用resize()方法,元组中放置的便是你要调整尺寸的大小。

下面举一个对图像进行灰度化、拷贝粘贴、缩略图、调整尺度、旋转90度的例子:

# -*- coding: utf-8 -*-
from PIL import Image
from pylab import *

# 添加中文字体支持
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\fonts\SimSun.ttc", size=14)
figure()

# 显示原图
pil_im = Image.open('d:\Eating.jpg')
print (pil_im.mode, pil_im.size, pil_im.format)
subplot(231)
title(u'原图', fontproperties=font)
axis('off')
imshow(pil_im)

# 显示灰度图
pil_im = Image.open('d:\Eating.jpg').convert('L')
gray()
subplot(232)
title(u'灰度图', fontproperties=font)
axis('off')
imshow(pil_im)

#拷贝粘贴区域
pil_im = Image.open('d:\Eating.jpg')
box = (100,100,200,200)
region = pil_im.crop(box)
region = region.transpose(Image.ROTATE_180)
pil_im.paste(region,box)
subplot(233)
title(u'拷贝粘贴区域', fontproperties=font)
axis('off')
imshow(pil_im)

# 缩略图
pil_im = Image.open('d:\Eating.jpg')
size = 64, 64
pil_im.thumbnail(size)
print (pil_im.size)
subplot(234)
title(u'缩略图', fontproperties=font)
axis('off')
imshow(pil_im)
pil_im.save('d:\Eating1.jpg') #保存缩略图

# 调整图像尺寸
pil_im = Image.open('d:\Eating.jpg')
pil_im = pil_im.resize(size)
print (pil_im.size)
subplot(235)
title(u'调整尺寸后的图像', fontproperties=font)
axis('off')
imshow(pil_im)

# 旋转图像90°
pil_im = Image.open('d:\Eating.jpg')
pil_im = pil_im.rotate(90)
subplot(236)
title(u'旋转90°后的图像', fontproperties=font)
axis('off')
imshow(pil_im)

show()

1.2 Matplotlib库

当在处理数学及绘图或在图像上描点、画直线、曲线时,Matplotlib是一个很好的绘图库,它比PIL库提供了更有力的特性。Matplotlib是开源的,可以在[matplotlib.sourceforge.net]上下载,并且它还提供了详细的文档及教程。。

1.2.1 画图、描点和线

虽然Matplotlib可以创建漂亮的条状图、饼图、散点图等,但是在很多计算机视觉应用场合,其实只用到了一些常用的命令。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值