欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【基本图像操作】Matplotlib

程序员文章站 2022-07-14 10:05:31
...

Matplotlib简介

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

绘制图像,点,线

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

# -*- coding:utf-8 -*-
"""
    @author:xunalove
    date: 2017-9-7
    python:2.7
    os:ubuntu 16.04
"""
from PIL import Image
from 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()

运行效果:
有坐标
【基本图像操作】Matplotlib
无坐标
【基本图像操作】Matplotlib

绘制图像等轮廓和直方图

绘制等轮廓:需要将图像灰度化。
直方图: 压平处理(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 Image
from 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()

效果图:第一张为绘制轮廓,第二张为绘制直方图
【基本图像操作】Matplotlib
【基本图像操作】Matplotlib

交互式标注

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 Image
from pylab import *

#读取图像转换为灰度图像并保存到数组
im = array(Image.open("/home/xuna/桌面/image/test.jpg"))

imshow(im)
print 'Please click 3 points'
x = ginput(3)

print 'you clicked:',x
show()

运行效果:
【基本图像操作】Matplotlib