开始接触图像处理这方面的内容了,循序渐进吧。!!!
首先显示最简单的输入与输出
from PIL import Image
pil_im = Image.open(r'C:\Users\liukuo\Desktop\330.jpg')
print(pil_im.format, pil_im.size, pil_im.mode)
pil_im.show()
# pil_im.rotate(45).show()
#旋转45度输出
首先显示从PIL中引入了Image
上述代码的返回值 pil_im
是一个 PIL 图像对象。第三行的解释如下
format 这个属性标识了图像来源。如果图像不是从文件读取它的值就是None。size属性是一个二元tuple,包含width和height(宽度和高度,单位都是px)。 mode 属性定义了图像bands的数量和名称,以及像素类型和深度。常见的modes 有 “L” (luminance) 表示灰度图像, “RGB” 表示真彩色图像, and “CMYK” 表示出版图像。
如果文件打开错误,返回 IOError 错误。
而且只需要在使用open函数的时候加入
.convert('L') 就可以得到相应的灰度图像了
在文件读取的时候出现了一些错误,所以我在前面加入了一个小r,如果后来又不懂了,那就来看看这里
https://blog.csdn.net/u011242657/article/details/64437612
这里对于图像的输出只是用了一个普通的Imaged的方法,我又发现了如下的两种方法:
1. 这个是基于matplotlib的
plt.figure("330")
plt.axis('off') #这就是把横向和纵向的坐标关了,axis: 轴,轴线;
plt.imshow(pil_im)
plt.show()
2.还有一个是基于 from scipy import misc 这个的;(不过这貌似只是个修改的方法,先看看吧)
import numpy as np
from scipy import misc
import matplotlib.pyplot as plt
def test_misc():
#读取图像
im = misc.imread("lena.jpg")
#显示图像
plt.figure(0)
plt.imshow(im)
#旋转图像
im_rotate = misc.imrotate(im, 90)
plt.figure(1)
plt.imshow(im_rotate)
#保存图像
misc.imsave("lena_rotate.jpg", im_rotate)
plt.show()
return
好了,我出去又回来啦!!!!!!!!!!!!!!!
下面继续吧
这里有看到一个Python dir()内置函数作用及使用方法
感觉dir()就是一个查询的函数,他可以查找参数的使用方法http://www.iplaypy.com/jichu/dir.html
搞完了open,现在搞一下save吧
# 很简单的单独保存,存储的位置在你的工作空间里
plt_in02.save("plt_in02.png")
其实应该还可以批量保存,并且更改后缀名,我试一下
# import os
# import sys
#
# for infile in sys.argv[1:]:
# f,e = os.path.splitext(infile) #分离文件名与扩展名;默认返回(fname,fextension)元组,可做分片操作
# # print(f)
# # print(e)
#
# outfile = f + ".png"
# if infile != outfile:
# try:
# Image.open(infile).save(outfile)
# except IOError:
# print("Cannot convert",infile)
唯一不懂得就是for语句的传入参这个sys.argv[1:] ????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
这个传入的参数我总是搞不好,哎,先放一放吧
http://python.jobbole.com/84956/’
https://blog.csdn.net/nature_XD/article/details/70741765
现在是将两幅图片放入同一个figure中,其实简单的很,
plt.figure() #现在这里定格基调,意思就是你要用一张figure来显示x张图
plt.subplot(2,2,1) # 主角登场
plt.imshow(pil_im)
plt_in02 = Image.open(r'C:\Users\liukuo\Desktop\330.jpg').convert('L')
plt.subplot(2,2,2) # 2x2矩阵中的第二个,也就是第一行第二列
plt.imshow(plt_in02)
plt.show()
这样就OK啦,这里感觉第一行和第七行的优先级可能要高一些,哈哈