python圖像處理-利用一行代碼實(shí)現(xiàn)灰度圖摳圖
一行代碼實(shí)現(xiàn)灰度圖摳圖
摳圖是ps的最基本技能,利用python可以實(shí)現(xiàn)用一行代碼實(shí)現(xiàn)灰度圖摳圖。
基礎(chǔ)算法是確定圖像二值化分割閾值的大津法,將圖像分成背景和前景兩部分,最大化背景和前景之間的類間方差。
具體理論部分可以搜索大津法了解一下,代碼部分只要在調(diào)用threshold的函數(shù)中,參數(shù)選擇THRESH_OTSU就可以調(diào)用大津法分割
ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
全部代碼如下,將原圖、直方圖和分割后的圖放在一起比較展示
image = cv2.imread("pictures/dajin.jpg")
#先轉(zhuǎn)化為灰度圖
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
plt.subplot(131), plt.imshow(image, "image")
plt.title("source image"), plt.xticks([]), plt.yticks([])
plt.subplot(132), plt.hist(image.ravel(), 256)
plt.title("Histogram")
ret1, th1 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) #方法選擇為THRESH_OTSU
plt.subplot(133), plt.imshow(th1, "gray")
plt.title("OTSU,threshold is " + str(ret1)), plt.xticks([]), plt.yticks([])
plt.show()
摳圖結(jié)果如下

但是這種算法對(duì)噪音和目標(biāo)大小十分敏感,背景和前景像素接近的時(shí)候分割效果并不好

Python摳圖程序源碼
零基礎(chǔ)學(xué)習(xí)python, 聽了若干節(jié)入門免費(fèi)課,即興寫了個(gè)程序,作為練習(xí),實(shí)現(xiàn)摳圖。
摳圖的手工操作,是在PS軟件中,將圖片復(fù)制新建粘貼,主體保留,周圍作為背景擦除,
被擦除區(qū)域,透明格式。成功后保存成 png 格式文件備用(png格式允許存儲(chǔ)圖層,保持透明區(qū)域)。手工操作費(fèi)力費(fèi)時(shí),操作不當(dāng)需要返回重新擦除,并且擦除精度隨操作者熟練程度各異。擦除一個(gè)人物對(duì)象的周邊,熟練者也需要幾分鐘。
python 語言,可以方便調(diào)用第三方功能包,實(shí)現(xiàn)摳圖目的,主體對(duì)象周邊比較平滑,程序執(zhí)行僅需要幾秒鐘,大大節(jié)約了人力和時(shí)間。
準(zhǔn)備
摳圖需要第三方功能包 removebg,安裝后才可以操作。安裝功能包需要在Windows 的dos 窗口,win+r 熱鍵調(diào)出運(yùn)行對(duì)話框,輸入 cmd 命令,打開 dos 窗口。dos窗口輸入:
pip install removebg<回車> (等待下載安裝結(jié)束) os包、time 包為系統(tǒng)自帶,無需安裝。
RemoveBg函數(shù)調(diào)用,需要APIKEY 實(shí)參(可稱密碼),這是一個(gè)多位字符串。獲取需要在 url = www.remove.bg 網(wǎng)站注冊(cè),獲得免費(fèi)APIKEY碼。尷尬的是,每日僅允許處理50張圖片。
程序構(gòu)思
1)要求允許處理多張jpg格式圖片,顯示運(yùn)行進(jìn)度, 適當(dāng)?shù)挠脩艚换ィ?轉(zhuǎn)成exe發(fā)布。
2)關(guān)鍵代碼,處理單張圖片的代碼僅兩行:
rmbg = RemoveBg('apiKey碼', '錯(cuò)誤信息記錄文件名')? #56行向網(wǎng)站發(fā)出獲取API 調(diào)用對(duì)象的請(qǐng)求,返回對(duì)象
rmbg.remove_background_from_img_file('./picture/' + item) ?#74行使用 rmbg 對(duì)象的方法,摳一張圖。
3)檢查圖片存放位置(文件夾存在否, 不存在則創(chuàng)建文件夾并退出)
4)檢查文件夾中有沒有文件,沒有則顯示信息并退出, 有則重新建表剔除非jpg格式文件。
5)檢查與處理摳圖定義了多個(gè)函數(shù),避免程序條理混亂,不易閱讀
readkey()-- 讀取APIkey 碼文件;founddir()-- 檢查存放圖片文件的文件夾是否存在,可發(fā)出提示信息;Cutout()-- 摳圖,含檢查圖片文件是否存在,以及剔除非jpg格式文件,并有提示;
6)主程序段,位于最后,明確提示操作準(zhǔn)備,交互是否繼續(xù),或取消。
7) 打包成 exe 文件(略)
完整代碼截圖如下,每條語句均有功能注釋
1 引用有關(guān)處理包

2 定義一個(gè)函數(shù),自附帶文件讀取 apikye 碼值

3. 定義搜索目錄的函數(shù),返回真/假。

4 定義摳圖處理的主函數(shù)

4 主程序

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
django項(xiàng)目簡(jiǎn)單調(diào)取百度翻譯接口的方法
這篇文章主要介紹了django項(xiàng)目簡(jiǎn)單調(diào)取百度翻譯接口的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-08-08
Python中順序表的實(shí)現(xiàn)簡(jiǎn)單代碼分享
這篇文章主要介紹了Python中順序表的實(shí)現(xiàn)簡(jiǎn)單代碼分享,展示了代碼運(yùn)行結(jié)果,然后分享了相關(guān)實(shí)例代碼,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01
Pythont特殊語法filter,map,reduce,apply使用方法
這篇文章主要介紹了Pythont特殊語法filter,map,reduce,apply使用方法,需要的朋友可以參考下2016-02-02
Python操作word實(shí)現(xiàn)添加文字或圖片水印
這篇文章主要為大家詳細(xì)介紹了如何使用Spire.Doc for Python在程序中的輕松添加文字和圖像水印到Word文檔,感興趣的小伙伴可以跟隨小編一起了解一下2023-10-10
python3啟動(dòng)web服務(wù)引發(fā)的一系列問題匯總
由于行內(nèi)交付的機(jī)器已自帶python3 ,沒有采取自行安裝python3,但是運(yùn)行python腳本時(shí)報(bào)沒有tornado module,遇到這樣的問題如何處理呢,下面小編給大家介紹下python3啟動(dòng)web服務(wù)引發(fā)的一系列問題匯總,感興趣的朋友一起看看吧2023-02-02
使用python對(duì)多個(gè)txt文件中的數(shù)據(jù)進(jìn)行篩選的方法
今天小編就為大家分享一篇使用python對(duì)多個(gè)txt文件中的數(shù)據(jù)進(jìn)行篩選的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07
Python 相對(duì)路徑和絕對(duì)路徑及寫法演示
這篇文章主要介紹了Python 相對(duì)路徑絕對(duì)路徑的相關(guān)知識(shí),結(jié)合實(shí)例代碼介紹了Python 相對(duì)路徑、絕對(duì)路徑的寫法實(shí)例演示,需要的朋友可以參考下2023-02-02
如何用Anaconda搭建虛擬環(huán)境并創(chuàng)建Django項(xiàng)目
在本篇文章里小編給大家整理了關(guān)于如何用Anaconda搭建虛擬環(huán)境并創(chuàng)建Django項(xiàng)目的相關(guān)文章,需要的朋友們可以跟著學(xué)習(xí)下。2020-08-08
使用Python給Excel工作表設(shè)置背景色或背景圖
Excel是工作中數(shù)據(jù)處理和分析數(shù)據(jù)的重要工具,面對(duì)海量的數(shù)據(jù)和復(fù)雜的表格,如何提高工作效率、減少視覺疲勞并提升數(shù)據(jù)的可讀性是不容忽視的問題,而給工作表設(shè)置合適的背景是表格優(yōu)化的一個(gè)有效方式,本文將介紹如何用Python給Excel工作表設(shè)置背景色或背景圖2024-07-07
Python爬取用戶觀影數(shù)據(jù)并分析用戶與電影之間的隱藏信息!
看電影前很多人都喜歡去 『豆瓣』 看影評(píng),所以我爬取44130條 『豆瓣』 的用戶觀影數(shù)據(jù),分析用戶之間的關(guān)系,電影之間的聯(lián)系,以及用戶和電影之間的隱藏關(guān)系,需要的朋友可以參考下2021-06-06

