PIL:Python图像处理类库
sudo apt install python-pip # 安装pip
sudo pip install pillow
# 读取一幅图像
from PIL import Image
im = Image.open('filename.jpg')
# 显示图像
im.show()
# 灰度图像
im_l = Image.open('filename.jpg').convert('L')
# 从文件名列表(filelist)中读取所有的图像文件,并转换成JPEG格式
from PIL import Image
import os
for infile in filelist:
outfile = os.path.splitext(infile)[0] + ".jpg"
if infile != outfile:
try:
Image.open(infile).save(outfile)
except IOError:
print "cannot convert", infile
- 创建一个包含文件夹中所有图像文件的文件名列表
imtool.py
import os
def get_imlist(path):
"""返回目录中所有JPG图像的文件名"""
return [os.path.join(path, f) for f in os.listdir(path) if f.endswith('.jpg')]
from PIL import Image
im = Image.open('filename.jpg')
# 最长边为128像素的缩略图,图像比例不变
im.thumbnail((128, 128))
from PIL import Image
im = Image.open('filename.jpg')
# 裁剪指定区域
box = (100, 100, 400, 400) # 四元组的坐标依次是(左,上,右,下),PIL中指定坐标系的左上角坐标为(0,0)
region = im.crop(box)
# 旋转180°
region = region.transpose(Image.ROTATE_180)
im.paste(region, box) #粘贴图像区域
from PIL import Image
im = Image.open('filename.jpg')
out = im.resize((128, 128)) # 图像比例会改变
out = im.rotate(45) # 逆时针旋转45°
Matplotlib
sudo pip install matplotlib
form PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('filename.jpg'))
# 绘制图像
imshow(im)
# 一些点
x = [100, 100, 400, 400]
y = [200, 500, 200, 500]
# 使用红色星状标记绘制点
plot(x, y, 'r*')
# 绘制连接前两个点的线,默认蓝色
plot(x[:2], y[:2])
# 添加标题
title('plotting')
axis('off') # 坐标轴不显示
show() # 会阻断脚本,一般最后调用
plot(x, y) # 默认为蓝色实线
plot(x, y, 'r*') # 红色星状标记
plot(x, y, 'go-') # 带有圆圈标记的绿线
plot(x, y, 'ks:') # 带有正方形标记的黑色点线
颜色 |
命令 |
蓝色 |
'b' |
绿色 |
'g' |
红色 |
'r' |
青色 |
'c' |
品红 |
'm' |
黄色 |
'y' |
黑色 |
'k' |
白色 |
'w' |
线型 |
命令 |
实线 |
'-' |
虚线 |
'--' |
点线 |
':' |
标记 |
命令 |
点 |
'.' |
圆圈 |
'o' |
正方形 |
's' |
星形 |
'*' |
加号 |
'+' |
叉号 |
'x' |
from PIL import Image
from pylab import *
# 读取图像到数组中
im = array(Image.open('filename.jpg').convert('L'))
# 新建一个图像
figure()
# 不使用颜色信息
gray()
# 在原点的左上角显示轮廓图像
contour(im, origin='image')
axis('equal')
axis('off')
# 直方图
figure()
hist(im.flatten(), 128) # 小区间的数目,只接受一维数组所以要先压平
show()
from PIL import Image
from pylab import *
im = array(Image.open('filename.jpg'))
imshow(im)
print 'Please click 3 points'
x = ginput(3) # 把坐标保存在x列表中
print 'you clicked:', x
show()