第六周 图片美颜
一。学习笔记
这是一个支持图像存储、显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的缩放、裁剪、叠加以及图像添加条纹,文字等信息等的操作。
首先是利用pip下载一个:
它有许多子库,例如:Image、ImageChops、ImageDraw等等,他们各有神通,发挥着自己的作用,
首先我们当然学习的是经典的Image子库;
| 方法 | 描述 |
| Image.open(filename) | 根据参数加载图像文件 |
| Image.new(mode,size,color) | 根据给定参数创建一个新的图像 |
| Image.open(StringIO.StringIO(buffer)) | 从字符串中获取图像 |
| Image.frombytes(mode,size,data) | 根据像素点data创建图像 |
| Image.verify() | 对图像文件完整性进行检查,返回异常 |
常用函数
读取一张图片:
im=Image.open(‘test.jpg’)
显示一张图片:
im.show()
保存图片:
im.save(“save.gif”,“GIF”) #保存图像为gif格式
查看图像信息
im.format, im.size, im.mode
图片裁剪:
box=(100,100,500,500)
#设置要裁剪的区域
region=im.crop(box) #此时,region是一个新的图像对象。
改变图像的大小
out=img.resize((128,128))#resize成128*128像素大小
旋转图像
out=img.rotate(45) #逆时针旋转45度
图像类型转换
im=im.convert(“RGBA”)
二,缩略图


三,改变颜色


四,轮廓

1 import numpy as np 2 import cv2 3 4 def beauty_face(img): 5 ''' 6 Dest =(Src * (100 - Opacity) + (Src + 2 * GuassBlur(EPFFilter(Src) - Src + 128) - 256) * Opacity) /100 ; 7 https://my.oschina.net/wujux/blog/1563461 8 ''' 9 10 dst = np.zeros_like(img) 11 #int value1 = 3, value2 = 1; 磨皮程度与细节程度的确定 12 v1 = 3 13 v2 = 1 14 dx = v1 * 5 # 双边滤波参数之一 15 fc = v1 * 12.5 # 双边滤波参数之一 16 p = 0.1 17 18 temp4 = np.zeros_like(img) 19 20 temp1 = cv2.bilateralFilter(img,dx,fc,fc) 21 temp2 = cv2.subtract(temp1,img) 22 temp2 = cv2.add(temp2,(10,10,10,128)) 23 temp3 = cv2.GaussianBlur(temp2,(2*v2 - 1,2*v2-1),0) 24 temp4 = cv2.add(img,temp3) 25 dst = cv2.addWeighted(img,p,temp4,1-p,0.0) 26 dst = cv2.add(dst,(10, 10, 10,255)) 27 return dst 28 29 def beauty_face2(src): 30 ''' 31 Dest =(Src * (100 - Opacity) + (Src + 2 * GuassBlur(EPFFilter(Src) - Src + 128) - 256) * Opacity) /100 ; 32 ''' 33 34 dst = np.zeros_like(src) 35 #int value1 = 3, value2 = 1; 磨皮程度与细节程度的确定 36 v1 = 3 37 v2 = 1 38 dx = v1 * 5 # 双边滤波参数之一 39 fc = v1 * 12.5 # 双边滤波参数之一 40 p = 0.1 41 42 temp4 = np.zeros_like(src) 43 44 temp1 = cv2.bilateralFilter(src,dx,fc,fc) 45 temp2 = cv2.subtract(temp1,src) 46 temp2 = cv2.add(temp2, (10,10,10,128)) 47 temp3 = cv2.GaussianBlur(temp2,(2*v2 - 1,2*v2-1),0) 48 temp4 = cv2.subtract(cv2.add(cv2.add(temp3, temp3), src), (10, 10, 10, 255)) 49 50 dst = cv2.addWeighted(src,p,temp4,1-p,0.0) 51 dst = cv2.add(dst, (10, 10, 10,255)) 52 return dst 53 54 55 def init(): 56 img = cv2.imread('testimg.jpg') 57 58 # blur1 = cv2.GaussianBlur(img, (5,5),0) 59 # blur2 = cv2.bilateralFilter(img, 9 , 75, 75) 60 blur3 = beauty_face(img) 61 blur4 = beauty_face2(img) 62 63 cv2.imshow('image0', img) 64 # cv2.imshow('image1', blur1) 65 # cv2.imshow('image2', blur2) 66 cv2.imshow('image3', blur3) 67 cv2.imshow('image4', blur4) 68 69 #cv2.namedWindow('image', cv2.WINDOW_NORMAL) 70 #cv2.resizeWindow('image', 1000, 1000) #定义frame的大小 71 72 cv2.waitKey(0) 73 cv2.imwrite('result1.png', blur3) 74 cv2.imwrite('result2.png', blur4) 75 cv2.destroyAllWindows() 76 77 if __name__ == "__main__": 78 init()
美白

Gif

浙公网安备 33010602011771号