该工具包是处理数学运算、绘制图表或者在图像上绘制点、直线、曲线。
绘制图像、点、和线
虽然Matplotlib可以绘制条形图、饼状图、散点图等,但对计算机视觉来说,只需要几个绘图命令。例如RCNN 目标检测,识别框的绘制。
#Image是PIL里的重要函数,导入PIL中的Image函数
#pylab是Matplotlib中的模块,导入pylab中的所有内容
from PIL import Image
form pylab import *
#读取图像到数组
im=array(Image.open('xxx.jpg'))
imshow(im)
#一些点
x=[100,200,300,400]
y=[100,200,300,400]
#红色标注绘制点
plot(x,y,'r')
#绘制连接前两个点的线
plot(x[:2],y[:2])
#添加标题
title('xxx')
show()
#关掉坐标轴的显示,注意坐标轴以左上角为原点
axis('off')
可以发现其实和matlab处理图像基本一致。
图像轮廓与直方图
绘制图形轮廓在图像的边缘检测等都有用处,需要对每个坐标[x,y]的像素值施加一个阈值,首先需要灰度化,然后
#新建一个图像
figure()
#不适用颜色
gray()
#绘制轮廓图像
contour(im,origin='image')
#x,y轴单位长度相等
axis('equal')
axis('off')
直方图是表示该图像像素值的分布情况,在图像处理的直方图均衡化中会有作用。用一定的小区间来表示像素值的范围(x),每个小区间会得到落入该区间的像素数目(y),简单来说小区间是分组,然后统计每组像素数量。
figure()
#hist函数来绘制直方图,参数128指的是小区间的数目
#flatton用于将任意数组转换为一维数组,因为hist只接受一维数组
hist(im.flatten(),128)
show()
交互式标注
有时用户需要标注一些点或者一些训练数据,比如用户在绘图窗口图像区域点击三次,程序会将这些点[x,y]保存下来。
#ginput来自pylab库
x=ginput(3)
print 'you clicked:',x
show()