1、前言
Python中有许多用于图像处理的库,像是Pillow,或者是OpenCV。而不少时候感受学完了这些图像处理模块没有什么用,其实只是你不知道怎么用罢了。今天就给你们带了一些美图技巧,让你的图美翻全场,朋友圈赞不绝口,女友也夸你,富贵你好厉害啊!python
2、模块安装
咱们主要使用到OpenCV和Pillow,另外咱们还会使用到wordcloud和paddlehub,咱们先安装一下:学习
pip install opencv-python pip install pillow python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple pip install -i https://mirror.baidu.com/pypi/simple paddlehub pip install -i https://pypi.tuna.tsinghua.edu.cn/simple/ myqr
另外我使用的Python环境是3.7,知道这些咱们就能够开始进行咱们的美图之旅了。字体
3、图片美化
一、祛痘
还在为痘痘犯难,不敢拍照吗?有了这个你就不用怕了(虽然有p图软件,可是你们不要揭穿我):spa
import cv2 level = 22 # 降噪等级 img = cv2.imread('girl.jpg') # 读取原图 img = cv2.bilateralFilter(img, level, level*2, level/2) # 美颜 cv2.imwrite('result.jpg', img)
实际上,在光滑的脸蛋上,痘痘就能够视为一个噪点,而咱们能够经过降噪的方式达到祛痘祛斑的效果,在OpenCV中就提供了相应的滤镜,咱们只须要调用便可。原图和实现效果图对好比下:.net
能够看到脸上的斑明显是变少了。绅士们应该能够注意到,脖子下面的皮肤光滑了许多。不过头发细节被抹除了很多。咱们能够经过调节level参数,调节效果。若是想效果更好,能够结合人脸识别,进行局部的祛痘处理。code
二、词云——我不仅是一张图
其实词云已是老生常谈了,可是做美图中的姣姣者,仍是有必要列出来的,由于一张词云所能包含的信息太多了:对象
from PIL import Image import numpy as np from wordcloud import WordCloud, ImageColorGenerator # 读取背景图片 mask = np.array(Image.open('rose.png')) # 定义词云对象 wc = WordCloud( # 设置词云背景为白色 background_color='white', # 设置词云最大的字体 max_font_size=30, # 设置词云轮廓 mask=mask, # 字体路径,若是须要生成中文词云,须要设置该属性,设置的字体须要支持中文 #font_path='msyh.ttc' ) # 读取文本 text = open('article.txt', 'r', encoding='utf-8').read # 生成词云 wc.generate(text) # 给词云上色 wc = wc.recolor(color_func=ImageColorGenerator(mask)) # 保存词云 wc.to_file('result.png')
其中article.txt为咱们的词云的文本素材,而rose.png则是词云轮廓(该图片背景应该为严格的白色或者透明),原图和实现效果以下:blog
仍是很是美的。更多详细内容能够参考https://blog.csdn.net/ZackSock/article/details/103517841。图片
三、风格迁移——努力变成你喜欢的样子
风格迁移,顾名思义就是将某一张图片的风格迁移到另外一张图片上。好比我拍了一张白天的图片,可是我想要一张夜景的图片,那咱们该怎么作呢?固然是等到晚上再拍了,不过除了这个方法,咱们还能够下载一张夜景图片,将夜景效果迁移到咱们的原图上。ip
风格迁移的实现须要使用深度学习才能实现,可是像我这样的菜鸡确定是不会深度学习的啦,因此咱们直接使用paddlehub中已经实现好的模型库:
import cv2 import paddlehub as hub # 加载模型库 stylepro_artistic = hub.Module(name="stylepro_artistic") # 进行风格迁移 im = stylepro_artistic.style_transfer( images=[{ # 原图 'content': cv2.imread("origin.jpg"), # 风格图 'styles': [cv2.imread("style.jpg")] }], # 透明度 alpha = 0.1 ) # 从返回的数据中获取图片的ndarray对象 im = im[0]['data'] # 保存结果图片 cv2.imwrite('result.jpg', im)
原图风格图和效果图以下: