比PS還好用!Python 20行代碼批量摳圖


摳圖前 vs Python自動摳圖後

在平常的工做和生活中,咱們常常會遇到須要摳圖的場景,即使是隻有一張圖片須要摳,也會摳得咱們不耐煩,假若遇到許多張圖片須要摳,這時候你的表情應該會頗有趣。python

Python可以成爲這樣的一種工具:在只有一張圖片,須要細緻地摳出人物的狀況下,能幫你減小摳圖步驟;在有多張圖片須要摳的狀況下,能直接幫你輸出這些人物的基本輪廓,雖然不夠細緻,但也夠用了。算法

DeepLabv3+ 是谷歌 DeepLab語義分割系列網絡的最新做 ,這個模型能夠用於人像分割,支持任意大小的圖片輸入。若是咱們本身來實現這個模型,那可能會很是麻煩,可是幸運的是,百度的paddle hub已經幫咱們實現了,咱們僅須要加載模型對圖像進行分割便可。bash

1.準備

爲了實現這個實驗,Python是必不可少的,若是你尚未安裝Python,建議閱讀咱們的這篇文章哦:超詳細Python安裝指南網絡

而後,咱們須要安裝百度的paddlepaddle, 進入他們的官方網站就有詳細的指引:
www.paddlepaddle.org.cn/install/qui…app

根據你本身的狀況選擇這些選項,最後一個CUDA版本,因爲本實驗不須要訓練數據,也不須要太大的計算量,因此直接選擇CPU版本便可。選擇完畢,下方會出現安裝指引,不得不說,Paddlepaddle這些方面作的仍是比較貼心的工具

(就是名字起的很差)

要注意,若是你的Python3環境變量裏的程序名稱是Python,記得將語句改成Python xxx,以下進行安裝:網站

python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple複製代碼

2.編寫代碼

整個步驟分爲三步:ui

1.加載模型
2.指定待摳圖的圖片目錄
3.摳圖
url

import osimport sysimport paddlehub as hub# 1.加載模型humanseg = hub.Module(name="deeplabv3p\_xception65\_humanseg")# 2.指定待摳圖圖片目錄path = './source/'files = \[\]dirs = os.listdir(path)for diretion in dirs: files.append(path + diretion)# 3.摳圖results = humanseg.segmentation(data={"image": files})for result in results: print(result\['origin'\]) print(result\['processed'\])複製代碼

很少很多一共20行代碼。摳圖完畢後會在本地文件夾下產生一個叫作humanseg_output的文件夾。這裏面存放的是已經摳圖成功的圖片。spa

本文20行代碼及全部圖片,請在關注本文最下方公衆號後臺回覆:Python自動摳圖 下載。

3.結果分析

不得不認可,谷歌的算法就素厲害啊。只要背景好一點,摳出來的細節都和手動摳的細節不相上下,甚至優於人工手段。

不過在背景和人的顏色不相上下的狀況下,會產生一些問題,好比下面這個結果:

背後那個大叔徹底被忽略掉了(求大叔的心裏陰影面積)。儘管如此,這個模型是我迄今爲止見過的最強摳圖模型,沒有之一。

咱們的文章到此就結束啦,若是你但願咱們今天的Python 教程,請持續關注咱們,若是對你有幫助,麻煩在下面點一個贊/在看哦有任何問題均可以在下方留言區留言,咱們都會耐心解答的!


​Python實用寶典 (pythondict.com)
不僅是一個寶典
歡迎關注公衆號:Python實用寶典

Python實用寶典
相關文章
相關標籤/搜索