1. 程式人生 > 實用技巧 >寬度改變從而改變某項元素的樣式或者顯示與否---媒體流的運用

寬度改變從而改變某項元素的樣式或者顯示與否---媒體流的運用

你是否曾經想將某張照片中的人物摳出來,然後拼接到其他圖片上去,從而可以即使你在天涯海角,我也可以到此一遊?

很多人學習python,不知道從何學起。
很多人學習python,掌握了基本語法過後,不知道在哪裡尋找案例上手。
很多已經做案例的人,卻不知道如何去學習更加高深的知識。
那麼針對這三類人,我給大家提供一個好的學習平臺,免費領取視訊教程,電子書籍,以及課程的原始碼!
QQ群:1097524789

專業點的人使用 PhotoShop 的“魔棒”工具可以摳圖,非專業人士可以使用各種美圖 APP 來實現,但是他們畢竟處理能力有限,一次只能處理一張圖片,而且比較複雜的影象可能耗時較久。

今天我來向大家展示第三種途徑——用 Python 一鍵批量摳圖。

準備工作

既然要裝逼,準備工作是少不了的。所謂“站在巨人的肩膀上,做事事半功倍”,我們這裡的“巨人”就是 paddlepaddle 了,中文名稱叫“飛槳”,那麼這個 paddlepaddle 是什麼呢?

它是“源於產業實踐的開源深度學習平臺,致力於讓深度學習技術的創新與應用更簡單”,直白點就是我幫你實現了深度學習底層框架,你只要有創意就可以在我平臺上運用少量簡單程式碼輕鬆實現。

它的官網是 https://www.paddlepaddle.org.cn/ 。

它的安裝也比較簡單,官網首頁就有安裝指引,我們這裡根據官網的安裝指引,使用 pip 方式來安裝 CPU 版本。

我們首先執行語句:

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

安裝成功後,我們在 python 環境中測試一下是否安裝成功(這個也是按照官網指引來做),我們切換到 python 環境,執行如下程式碼:

Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24)[Clang 6.0 (clang-600.0.57)] on darwinType "help", "copyright", "credits" or "license" for more information.
>>> import paddle.fluid>>> paddle.fluid.install_check.run_check()Running Verify Paddle Program ...Your Paddle works well on SINGLE GPU or CPU.I0506 21:47:48.657404 2923565952 parallel_executor.cc:440] The Program will be executed on CPU using ParallelExecutor, 2 cards are used, so 2 programs are executed in parallel.W0506 21:47:48.658407 2923565952 fuse_all_reduce_op_pass.cc:74] Find all_reduce operators: 2. To make the speed faster, some all_reduce ops are fused during training, after fusion, the number of all_reduce ops is 1.I0506 21:47:48.658516 2923565952 build_strategy.cc:365] SeqOnlyAllReduceOps:0, num_trainers:1I0506 21:47:48.659137 2923565952 parallel_executor.cc:307] Inplace strategy is enabled, when build_strategy.enable_inplace = TrueI0506 21:47:48.659595 2923565952 parallel_executor.cc:375] Garbage collection strategy is enabled, when FLAGS_eager_delete_tensor_gb = 0Your Paddle works well on MUTIPLE GPU or CPU.Your Paddle is installed successfully! Let's start deep Learning with Paddle now>>>

看到 Your Paddle is installed successfully 就表示安裝成功了。

我們接下來需要使用的是這個平臺的 paddlehub 工具,所以我們還需要安裝 paddlehub :

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

安裝完成後,我們就可以開始運用了。

程式碼實現

我們的實現步驟很簡單:匯入模組 -> 載入模型 -> 獲取圖片檔案 -> 呼叫模組摳圖。

下面我們看程式碼實現:

import os, paddlehub as hubhuseg = hub.Module(name='deeplabv3p_xception65_humanseg') # 載入模型path = './imgs/' # 檔案目錄files = [path + i for i in os.listdir(path)] # 獲取檔案列表results = huseg.segmentation(data={'image': files}) # 摳圖

我將圖片放在程式碼資料夾的同級目錄 imgs 資料夾下,執行程式碼後,輸出的摳圖圖片會自動放在程式碼同級目錄的 humanseg_output 目錄下,檔名稱跟原圖片的名稱相同,但是檔案格式是 png 。

我在 imgs 目錄下放了5張圖片,為了便於展示,我將他們放在一起截圖:

執行程式後,在 humanseg_output 目錄下生成了5張圖片,同樣的,我將他們放在一起截圖:

我們可以看到程式將每張圖片中的人物(可以是一個,也可以是多個)識別出來,並且摳出來成圖,背景是白色。

雖然有些細節處還有些許瑕疵,但是看起來還算不錯。

本文基於 paddlepaddle 平臺,使用簡單的五行程式碼實現了批量摳圖,不僅解放了好多人的雙手和雙眼,而且為某些程式猿/程式媛的裝逼工具箱提供了一件寶器。

下次如果碰到某個女生或者閨蜜在為摳圖發愁,別忘了掏出神器,贏得芳心哦!

-------------------End-------------------