該工具包是處理數學運算、繪製圖表或者在圖像上繪製點、直線、曲線。
繪製圖像、點、和線
雖然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()