Python中的图像处理 (3)

图像的坐标轴是一个很有用的调试工具;但是,如果你想绘制出较美观的图像,加上下列命令可以使坐标轴不显示:

axis(\'off\')

上面的命令将绘制出如图 1-2 右边所示的图像。

Python中的图像处理

图 1-2:Matplotlib 绘图示例。带有坐标轴和不带坐标轴的包含点和一条线段的图像

在绘图时,有很多选项可以控制图像的颜色和样式。最有用的一些短命令如表 1-1、表 1-2 和表 1-3 所示。使用方法见下面的例子:

plot(x,y) # 默认为蓝色实线 plot(x,y,\'r*\') # 红色星状标记 plot(x,y,\'go-\') # 带有圆圈标记的绿线 plot(x,y,\'ks:\') # 带有正方形标记的黑色虚线

表1-1:用PyLab库绘图的基本颜色格式命令

颜色


\'b\'

 

蓝色

 

\'g\'

 

绿色

 

\'r\'

 

红色

 

\'c\'

 

青色

 

\'m\'

 

品红

 

\'y\'

 

黄色

 

\'k\'

 

黑色

 

\'w\'

 

白色

 

表1-2:用PyLab库绘图的基本线型格式命令

线型


\'-\'

 

实线

 

\'--\'

 

虚线

 

\':\'

 

点线

 

表1-3:用PyLab库绘图的基本绘制标记格式命令

标记


\'.\'

 

 

\'o\'

 

圆圈

 

\'s\'

 

正方形

 

\'*\'

 

星形

 

\'+\'

 

加号

 

\'x\'

 

叉号

 
1.2.2 图像轮廓和直方图

下面来看两个特别的绘图示例:图像的轮廓和直方图。绘制图像的轮廓(或者其他二维函数的等轮廓线)在工作中非常有用。因为绘制轮廓需要对每个坐标 [x, y] 的像素值施加同一个阈值,所以首先需要将图像灰度化:

from PIL import Image from pylab import * # 读取图像到数组中 im = array(Image.open(\'empire.jpg\').convert(\'L\')) # 新建一个图像 figure() # 不使用颜色信息 gray() # 在原点的左上角显示轮廓图像 contour(im, origin=\'image\') axis(\'equal\') axis(\'off\')

像之前的例子一样,这里用 PIL 的 convert() 方法将图像转换成灰度图像。

图像的直方图用来表征该图像像素值的分布情况。用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目。该(灰度)图像的直方图可以使用 hist() 函数绘制:

figure() hist(im.flatten(),128) show()

hist() 函数的第二个参数指定小区间的数目。需要注意的是,因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理。flatten() 方法将任意数组按照行优先准则转换成一维数组。图 1-3 为等轮廓线和直方图图像。

Python中的图像处理

图 1-3:用 Matplotlib 绘制图像等轮廓线和直方图

1.2.3 交互式标注

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgwdgy.html