一、所用的相关模块:
ImageMagick (多平台、创建、编辑和合成位图等)
OpenCV (Open Soure Computer Vision 计算机视觉处理图像库,人脸识别、动作识别、轨迹建模等)
PIP(Python Imaging Library 已不再维护,由Pillow替代)
Pillow (位图处理,查看图片信息、常规处理等,不含有对矢量图的处理)
图像:
位图:又名点阵图(像素)缺点:颜色越丰富,细节越清晰,文件越大。常见格式:BMP,GIF,PNG,JPEG,等等。
矢量图:有计算机计算产生。缺点,对颜色细节处理不好
像素:指图像水平方向(长)和垂直方向(高)的像素个数的个数。
颜色模式:(Pillow.mode)
RGB 红、蓝、绿。有0~255设置该中颜色的多少,最终颜色是叠加后的实现的。适合显示器的输出(加色法)
CMYK 采用青(Cyan)、品红(Magenta)、黄(Yellow)、黑(Black)四种油墨来生成颜色,用于印刷领域。(减色法)
灰度模式 只包含灰度信息。不包含彩色信息、有8位显示颜色信息
二、基本的图像处理:
安装:PIL
你会发现pip3 install PIL 找不到PIL包
你需要通过安装pillow后,查看你安装python相应的.\python\python36-32\lib\site-packages\PIL
或者.\anaconda3\lib\site-packages\PIL,看是否存在这个文件夹。
若存在,说明已经成功安装了PIL,import PIL 若显示仍然没有,重启一下电脑。再试试即可。
图像的读写操作:
import PIL from PIL import Image image1 = Image.open(".\照片组\照片 (4).jpg") #取当前路径下一文件夹中的一张照片 image2 = Image.Image() print(image1,image2) #显示对象信息 image1.show() #调用系统默认的图像显示软件显示照片 image1.save("new_image.jpg") #保存到当前路径里,命名为new_image.jpg print(image1.filename)
获取图像的其他信息:*注意,像image2这样的对象,只要被赋值后才能调用这些方法,因为没赋值前它是NoneType类型的。
print(image1.filename) print(image1.size) print(image1.mode) print(image1.getbands()) print(image1.format) #显示扩展名,文件的后缀只是一种判断手段,不会因为后缀的修改,扩展名也随着修改的。 print(image1.info) print(image1.readonly) #0表示读写,1表示只读
转换照片格式格式:
通过save,重新保存成新的格式文件即可
convert不同颜色模式的转换:
主要的模式包括:1,、L、P 、RGB、RGBA、CMYK、YcbCr、I、F等等。
image1.convert("L") #显示不同的颜色模式 image1.show()
#图像的裁剪和合成 rec = (100,100,500,500) new_image = image1.crop(rec) # new_image.show() #复制 copy_image = new_image.copy() #拼接 bg_image = Image.open(".\照片组\照片 (2).jpg") bg_image.paste(copy_image,(0,0,400,400)) bg_image.show()
#设置透明遮罩 mask = new_image.point(lambda i:i<100 and 255) mask = mask.convert("1") im8 = Image.open(".\照片组\照片 (2).jpg") im8.paste(im = new_image, box = rec, mask = mask ) im8.show()
#单独通道处理 r,g,b = image1.split() merge_im = Image.merge("RGB",(g,r,b)) #这里只是将r,g,换了一下位置。 merge_im.show()
#图像变换,缩略图 im = image1.resize((140,180)) # im.show() image1.thumbnail((140,180)) #或者直接调用该方法 #image1.show()
旋转rotate(角度)
transpose(动作类型)
FLIP_LEFT_RIGHT左右反转 ROTATE_180 逆时针旋转180度
FLIP_TOP_BOTTOM上下翻转 ROTATE——270 逆时针270
其他图像处理:
PIL.ImageChops:
constant()生成图像 invert 反色处理
混合处理:
lighter 亮化 darker 暗化 difference 差值 multiply 正片叠底 screen 屏幕
增强处理:(PIL.ImageEnhance)
.Color()彩色调整 · Brightness()明亮度~ Contrast 对比度 Sharpness 锐度
内置滤镜:(PIL.ImageFilter)
from PIL import ImageFilter as IF,Image im1 = Image.open(".\照片组\照片 (2).jpg") im1.filter(IF.CONTOUR).show() #添加滤镜CONTOUR,(ImageFileter还有很多滤镜。)