第六周 图片美颜

一。学习笔记

这是一个支持图像存储、显示和处理的函数库,它能够处理几乎所有图像格式,可以完成对图像的缩放、裁剪、叠加以及图像添加条纹,文字等信息等的操作。

首先是利用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

 

 

posted on 2020-04-11 17:50  Hrunjie  阅读(114)  评论(0)    收藏  举报

导航