基本的图像处理和操作—— Matplotlib

Matplotlib

1.1绘制图像、点、线

Matplotlib可以绘制出较好的条形图、饼状图、散点图等.

from PIL import Image
from pylab import *

#读取图像到数组中
im = array(Image.open('FatherAndSon.jpg'))
#绘制图像
imshow(im)

#一些点
x = [50,50,100,100]
y = [50,100,50,100]

#使用红色星状标记绘制点
plot(x,y,'r*')

#绘制连接前两个点的线
plot(x[:2],y[:2])

#添加标题,显示绘制的图像
title('Plotting:"FatherAndSon.jpg"')

#不显示坐标轴
axis('off')

show()

在每个脚本里只能调用一次show()命令,而且通常是在脚本的结尾调用.

 

                                                                              

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

表1 用 PyLab 库绘图的基本颜色格式命令
                  颜色 
                    'b'        蓝色
                    'g'        绿色
                    'r'        红色
                    'c'        青色
                    'm'        品红
                    'y'        黄色
                    'k'        黑色
                    ’w‘        白色
表2 用 PyLab 库绘图的基本线型格式命令
                线型 
                  '-'         实线
                  '--'         虚线
                   ':'         点线

 

表3 用 PyLab 库绘图的基本绘制标记格式命令
                   标记      
                     '·'                点
                     ’o‘               圆圈
                     's'              正方形
                     '*'                星号
                     '+'                加号
                     'x'                叉号

 

1.2绘制图像轮廓和直方图

绘制轮廓需要对每个坐标 [x, y] 的像素值施加同一个阈值,所以首先需要将图像灰度化.

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

图像的直方图用来表征该图像像素值的分布情况.用一定数目的小区间(bin)来指定表征像素值的范围,每个小区间会得到落入该小区间表示范围的像素数目.该(灰度)图像的直方图可以使用 hist() 函数绘制.hist() 函数的第二个参数指定小区间的数目.需要注意的是,因为 hist() 只接受一维数组作为输入,所以我们在绘制图像直方图之前,必须先对图像进行压平处理.flatten() 方法将任意数组按照行优先准则转换成一维数组.

用 Matplotlib 绘制图像等轮廓线
直方图

 

 

1.3交互式标注

from PIL import Image
from pylab import *
im = array(Image.open('FatherAndSon.jpg'))
imshow(im)
print("Please click 3 points")
x = ginput(3)
print("you clicked:",x)
show()
#如果出现x输出为空列表,请按此博客最后一幅图所示操作

             脚本首先绘制一幅图像,然后等待用户在绘图窗口的图像区域点击三次。程序将这些点击的坐标 [x, y] 自动保存在 x 列表里 .       

                

                                                           

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值