【基本图像操作】Matplotlib

来源:互联网 发布:python控制继电器代码 编辑:程序博客网 时间:2024/05/20 15:10

Matplotlib简介

Matplotlib具有比PIL更强大的绘图功能,可以绘制条形图,饼状图,散点图等。

绘制图像,点,线

用四个点绘制和一条线绘制图像。
代码注释十分详细。

# -*- coding:utf-8 -*-"""    @author:xunalove    date: 2017-9-7    python:2.7    os:ubuntu 16.04"""from PIL import Imagefrom pylab import *#读取图像到数组im = array(Image.open("/home/xuna/桌面/image/test.jpg"))#绘制图像imshow(im)#给定的x坐标和y坐标x = [100,1,200,200]y = [200,1,0,100]#使用红色星状标记绘制点plot(x,y,'r*')"""控制图像的颜色和样式的命令plot(x,y)        #默认为蓝色实线plot(x,y,'r*')   #红色星状标记plot(x,y,'ro-')  #带有圆圈标记的绿线plot(x,y,'ks:')  #带有正方形标记的黑色点线b 蓝色 g 绿色 r 红色 c 青色 m 品红 y 黄色 k 黑色 w 白色- 实线 -- 虚线 : 点线. 点   o  圆圈 s 正方形 * 星型 + 加号 x 差号"""#绘制连接前两个点的线plot(x[:2],y[:2])#添加标题,显示绘制的图像title('Plotting: "empire.jpg"')#不显示坐标轴#axis("off")#每一个脚本只能调用一次show()命令,一般放在脚本的结尾处show()

运行效果:
有坐标
这里写图片描述
无坐标
这里写图片描述

绘制图像等轮廓和直方图

绘制等轮廓:需要将图像灰度化。
直方图: 压平处理(flatten()将任意数组按照行优先准则转换为一维数组),直方图是使用hist方法绘制。
flatten()的用法:http://blog.csdn.net/maoersong/article/details/23823925

直方图的意义
表示该图像像素值的分布情况,用一定数目的小区间来指定像素值的范围,每一个小区间会得到落入该小区间表示范围的像素数目。

# -*- coding:utf-8 -*-"""    @author:xunalove    date: 2017-9-7    python:2.7    os:ubuntu 16.04"""from PIL import Imagefrom pylab import *#读取图像转换为灰度图像并保存到数组im = array(Image.open("/home/xuna/桌面/image/test.jpg").convert('L'))"""#绘制图像等轮廓#新建一个图像figure()#不使用颜色信息gray()#在原点的左上角显示轮廓图像contour(im, origin = 'image')axis('equal')"""#绘制直方图figure()#第二个参数128代表指定小区间的数目hist(im.flatten(),128)show()

效果图:第一张为绘制轮廓,第二张为绘制直方图
这里写图片描述
这里写图片描述

交互式标注

python库中的ginput()函数可以实现交互标注,例如绘制一幅图片,然后等待用户在绘制窗口区域点击三次,程序将这些点击的x,y坐标[x,y]自动保存在x列表中。
代码:

# -*- coding:utf-8 -*-"""    @author:xunalove    date: 2017-9-7    python:2.7    os:ubuntu 16.04"""from PIL import Imagefrom pylab import *#读取图像转换为灰度图像并保存到数组im = array(Image.open("/home/xuna/桌面/image/test.jpg"))imshow(im)print 'Please click 3 points'x = ginput(3)print 'you clicked:',xshow()

运行效果:
这里写图片描述

原创粉丝点击