如何使用五行Python代碼輕松實(shí)現(xiàn)批量摳圖
前言
你是否曾經(jīng)想將某張照片中的人物摳出來(lái),然后拼接到其他圖片上去,從而可以即使你在天涯海角,我也可以到此一游?
專業(yè)點(diǎn)的人使用 PhotoShop 的“魔棒”工具可以摳圖,非專業(yè)人士可以使用各種美圖 APP 來(lái)實(shí)現(xiàn),但是他們畢竟處理能力有限,一次只能處理一張圖片,而且比較復(fù)雜的圖像可能耗時(shí)較久。
今天我來(lái)向大家展示第三種途徑——用 Python 一鍵批量摳圖。
準(zhǔn)備工作
既然要裝逼,準(zhǔn)備工作是少不了的。所謂“站在巨人的肩膀上,做事事半功倍”,我們這里的“巨人”就是 paddlepaddle 了,中文名稱叫“飛槳”,那么這個(gè) paddlepaddle 是什么呢?
它是“源于產(chǎn)業(yè)實(shí)踐的開(kāi)源深度學(xué)習(xí)平臺(tái),致力于讓深度學(xué)習(xí)技術(shù)的創(chuàng)新與應(yīng)用更簡(jiǎn)單”,直白點(diǎn)就是我?guī)湍銓?shí)現(xiàn)了深度學(xué)習(xí)底層框架,你只要有創(chuàng)意就可以在我平臺(tái)上運(yùn)用少量簡(jiǎn)單代碼輕松實(shí)現(xiàn)。它的官網(wǎng)是 https://www.paddlepaddle.org.cn/ 。
它的安裝也比較簡(jiǎn)單,官網(wǎng)首頁(yè)就有安裝指引,我們這里根據(jù)官網(wǎng)的安裝指引,使用 pip 方式來(lái)安裝 CPU 版本。
我們首先執(zhí)行語(yǔ)句:
python -m pip install paddlepaddle -i https://mirror.baidu.com/pypi/simple
安裝成功后,我們?cè)?python 環(huán)境中測(cè)試一下是否安裝成功(這個(gè)也是按照官網(wǎng)指引來(lái)做),我們切換到 python 環(huán)境,運(yùn)行如下代碼:
Python 3.7.0 (v3.7.0:1bf9cc5093, Jun 26 2018, 23:26:24) [Clang 6.0 (clang-600.0.57)] on darwin Type "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:1 I0506 21:47:48.659137 2923565952 parallel_executor.cc:307] Inplace strategy is enabled, when build_strategy.enable_inplace = True I0506 21:47:48.659595 2923565952 parallel_executor.cc:375] Garbage collection strategy is enabled, when FLAGS_eager_delete_tensor_gb = 0 Your 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 就表示安裝成功了。
我們接下來(lái)需要使用的是這個(gè)平臺(tái)的 paddlehub 工具,所以我們還需要安裝 paddlehub :
pip install -i https://mirror.baidu.com/pypi/simple paddlehub
安裝完成后,我們就可以開(kāi)始運(yùn)用了。
代碼實(shí)現(xiàn)
我們的實(shí)現(xiàn)步驟很簡(jiǎn)單:導(dǎo)入模塊 -> 加載模型 -> 獲取圖片文件 -> 調(diào)用模塊摳圖。
下面我們看代碼實(shí)現(xiàn):
import os, paddlehub as hub huseg = hub.Module(name='deeplabv3p_xception65_humanseg') # 加載模型 path = './imgs/' # 文件目錄 files = [path + i for i in os.listdir(path)] # 獲取文件列表 results = huseg.segmentation(data={'image': files}) # 摳圖
我將圖片放在代碼文件夾的同級(jí)目錄 imgs 文件夾下,運(yùn)行代碼后,輸出的摳圖圖片會(huì)自動(dòng)放在代碼同級(jí)目錄的 humanseg_output 目錄下,文件名稱跟原圖片的名稱相同,但是文件格式是 png 。
我在 imgs 目錄下放了5張圖片,為了便于展示,我將他們放在一起截圖:
原圖片
運(yùn)行程序后,在 humanseg_output 目錄下生成了5張圖片,同樣的,我將他們放在一起截圖:
摳圖圖片
我們可以看到程序?qū)⒚繌垐D片中的人物(可以是一個(gè),也可以是多個(gè))識(shí)別出來(lái),并且摳出來(lái)成圖,背景是白色。雖然有些細(xì)節(jié)處還有些許瑕疵,但是看起來(lái)還算不錯(cuò)。
補(bǔ)充:可能遇到的坑
1. 報(bào)錯(cuò)RuntimeError: Environment Variable CUDA_VISIBLE_DEVICES is not set correctly. If you wanna use gpu, please set CUDA_VISIBLE_DEVICES as cuda_device_id.
import os os.environ['CUDA_VISIBLE_DEVICES'] = '0'
或
set CUDA_VISIBLE_DEVICES=0
總結(jié)
本文基于 paddlepaddle 平臺(tái),使用簡(jiǎn)單的五行代碼實(shí)現(xiàn)了批量摳圖,不僅解放了好多人的雙手和雙眼,而且為某些程序猿/程序媛的裝逼工具箱提供了一件寶器。下次如果碰到某個(gè)女生或者閨蜜在為摳圖發(fā)愁,別忘了掏出神器,贏得芳心哦!
到此這篇關(guān)于如何使用五行Python代碼輕松實(shí)現(xiàn)批量摳圖的文章就介紹到這了,更多相關(guān)Python批量摳圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 實(shí)現(xiàn)取多維數(shù)組第n維的前幾位
今天小編就為大家分享一篇Python 實(shí)現(xiàn)取多維數(shù)組第n維的前幾位,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-11-11TensorFlow人工智能學(xué)習(xí)數(shù)據(jù)類型信息及轉(zhuǎn)換
這篇文章主要為大家介紹了TensorFlow人工智能學(xué)習(xí)數(shù)據(jù)類型信息及轉(zhuǎn)換,2021-11-11tensorflow的ckpt及pb模型持久化方式及轉(zhuǎn)化詳解
今天小編就為大家分享一篇tensorflow的ckpt及pb模型持久化方式及轉(zhuǎn)化詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-02-02Python實(shí)現(xiàn)對(duì)Excel文件中不在指定區(qū)間內(nèi)的數(shù)據(jù)加以去除的方法
這篇文章主要介紹了基于Python語(yǔ)言,讀取Excel表格文件,基于我們給定的規(guī)則,對(duì)其中的數(shù)據(jù)加以篩選,將不在指定數(shù)據(jù)范圍內(nèi)的數(shù)據(jù)剔除,保留符合我們需要的數(shù)據(jù)的方法,需要的朋友可以參考下2023-08-08python實(shí)現(xiàn)word/excel/ppt批量轉(zhuǎn)pdf的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用python實(shí)現(xiàn)word、excel、ppt批量轉(zhuǎn)pdf文件,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考下2023-09-09JupyterLab遠(yuǎn)程密碼訪問(wèn)實(shí)現(xiàn)
本文主要介紹了JupyterLab遠(yuǎn)程密碼訪問(wèn)實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問(wèn)題
這篇文章主要介紹了解決Jupyter-notebook不彈出默認(rèn)瀏覽器的問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-03-03Python列表推導(dǎo)式實(shí)現(xiàn)代碼實(shí)例
這篇文章主要介紹了Python列表推導(dǎo)式實(shí)現(xiàn)代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-09-09