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


摳圖前 vs Python自動摳圖後

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

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

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

1.準備

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

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

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

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

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

還須要安裝paddlehub:url

pip install -i https://mirror.baidu.com/pypi/simple paddlehub

2.編寫代碼

整個步驟分爲三步:spa

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

import os
import sys
import 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的文件夾。這裏面存放的是已經摳圖成功的圖片。

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

3.結果分析

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

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

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

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


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

Python實用寶典

相關文章
相關標籤/搜索