pip install Pillow
# 用pip安装
from PIL import Image
pil_im = Image.open("test.png")
# 读入一个名为test.png的图片
type(pil_im)
# 显示pil_im的数据类型,
pil_im.show()
# 生成一个窗口显示test.png图片
pil_im = Image.open("test.png").convert("L")
# 将test.png转化为灰度图
pil_im = Image.open("test.png").convert("1")
# 将test.png转化为二值图
pil_im.save("test.jpg")
# 保存图像
# pil_im是open读入的图片,将被保存为test.jpg
# 这里可以保存为不同格式的图片,.jpg或.png都可以
# 是新生成一张图片并保存,并不会覆盖原文件
img = pil_im.thumbnail((128, 128))
# 创建pil_im的缩略图
pil_im.show()
# 显示生成的缩略图
img.show()
# 报错,因为.thumbnail改变的是原图,返回给img的值为None
thumbnail和resize的区别
box = (100, 100, 400, 400)
# 四元组表示剪裁区域
# 1,2,3,4元素分别对应,剪裁区域左边框到原图左边框的距离;剪裁区域上边框到原图上边框的距离;剪裁区域右边框到原图左边框的距离;剪裁区域下边框到原图上边框的距离
region = pil_im.crop(box)
# 按box取值切割原图pil_im,剪裁下来的图返回给region
region = region.transpose(Image.ROTATE_180)
# region旋转180度
pil_im.paste(region, box)
# 将旋转后的region粘贴回原处,这一操作会改变原图
out = pil_im.resize((128, 128))
# 正如上面说的,resize原图不变,返回给out大小调整后的图片
out = pil_im.rotate(45)
# 旋转操作,参数是旋转角度
pip install matplotlib
# pip安装
from PIL import Image
import matplotlib.pylab as plt
im = plt.array(Image.open("test.png"))
# 读取图片,并转为“numpy.ndarray”格式
# 因为下面的画点操作,所以要转成“numpy.ndarray”格式
plt.imshow(im)
# plt.imshow()指定了接下来的操作是对im执行,并显示其格式,不显示图像
x = [100, 100, 400, 400]
y = [200, 500, 200, 500]
plt.plot(x, y, "r*")
plt.plot(x[:2], y[:2])
# 连接前两个点,即(100,200)和(100,500)
plt.title('Plotting:"test.png"')
# 加标题
plt.axis("off")
# plt.axis是对坐标轴进行操作,"off"是去掉坐标轴
plt.show()
# 显示处理后的图像
# plt.show()过后,再想处理哪一张图片,需要用plt.imshow()重新指定
plt.axis()的参数 | 含义 |
---|---|
‘on’ | 打开坐标轴 |
‘off’ | 关闭坐标轴 |
‘equal’ | 通过改变轴取值的范围,使横轴和纵轴跨度相等。不改变图片尺寸,多出来的部分是空白 |
‘scaled’ | |
‘tight’ | |
‘auto’ | |
’ normal’ | |
‘image’ | |
‘square’ |
from PIL import Image
import matplotlib.pylab as plt
im = plt.array(Image.open("test.png").convert("L"))
plt.figure()
# 新建一个图像,并指定下面的操作是在这个图像上
plt.gray()
# 设置这个图像为单通道图像,即灰度图
plt.contour(im, origin="image")
# 画轮廓
plt.axis("equal")
plt.axis("off")
plt.figure()
# 再创建一个新图像,接下来的操作是在这个图像上
plt.hist(im.flatten(), 128)
# 绘制直方图
# im.flatten()将转化为“numpy.ndarray”格式的原图像按行有限准则变成一维数组
# 128指定了有128个直方条形图,每个条的高度,是一维数组中,落入这个条的像素值的和
plt.show()
# 显示两张图像
from PIL import Image
import matplotlib.pylab as plt
im = plt.array(Image.open("test.png"))
plt.imshow(im)
x = plt.ginput(3)
# 显示原图像,等待点击三次,将位置信息返回给列表x
如果您有修改意见或问题,欢迎留言或者通过邮箱和我联系。
手打很辛苦,如果我的文章对您有帮助,转载请注明出处。