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)
原圖風格圖和效果圖以下: