您好,登錄后才能下訂單哦!
這篇“如何利用一行python代碼實現灰度圖摳圖”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“如何利用一行python代碼實現灰度圖摳圖”文章吧。
摳圖是ps的最基本技能,利用python可以實現用一行代碼實現灰度圖摳圖。
基礎算法是確定圖像二值化分割閾值的大津法,將圖像分成背景和前景兩部分,最大化背景和前景之間的類間方差。
具體理論部分可以搜索大津法了解一下,代碼部分只要在調用threshold的函數中,參數選擇THRESH_OTSU就可以調用大津法分割
ret1, th2 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU)
全部代碼如下,將原圖、直方圖和分割后的圖放在一起比較展示
image = cv2.imread("pictures/dajin.jpg") #先轉化為灰度圖 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, th2 = cv2.threshold(gray, 0, 255, cv2.THRESH_OTSU) #方法選擇為THRESH_OTSU plt.subplot(133), plt.imshow(th2, "gray") plt.title("OTSU,threshold is " + str(ret1)), plt.xticks([]), plt.yticks([]) plt.show()
摳圖結果如下
但是這種算法對噪音和目標大小十分敏感,背景和前景像素接近的時候分割效果并不好
零基礎學習python, 聽了若干節入門免費課,即興寫了個程序,作為練習,實現摳圖。
摳圖的手工操作,是在PS軟件中,將圖片復制新建粘貼,主體保留,周圍作為背景擦除,
被擦除區域,透明格式。成功后保存成 png 格式文件備用(png格式允許存儲圖層,保持透明區域)。手工操作費力費時,操作不當需要返回重新擦除,并且擦除精度隨操作者熟練程度各異。擦除一個人物對象的周邊,熟練者也需要幾分鐘。
python 語言,可以方便調用第三方功能包,實現摳圖目的,主體對象周邊比較平滑,程序執行僅需要幾秒鐘,大大節約了人力和時間。
摳圖需要第三方功能包 removebg,安裝后才可以操作。安裝功能包需要在Windows 的dos 窗口,win+r 熱鍵調出運行對話框,輸入 cmd 命令,打開 dos 窗口。dos窗口輸入:
pip install removebg<回車> (等待下載安裝結束) os包、time 包為系統自帶,無需安裝。
RemoveBg函數調用,需要APIKEY 實參(可稱密碼),這是一個多位字符串。獲取需要在 url = www.remove.bg 網站注冊,獲得免費APIKEY碼。尷尬的是,每日僅允許處理50張圖片。
1)要求允許處理多張jpg格式圖片,顯示運行進度, 適當的用戶交互, 轉成exe發布。
2)關鍵代碼,處理單張圖片的代碼僅兩行:
rmbg = RemoveBg('apiKey碼', '錯誤信息記錄文件名') #56行
向網站發出獲取API 調用對象的請求,返回對象
rmbg.remove_background_from_img_file('./picture/' + item) #74行
使用 rmbg 對象的方法,摳一張圖。
3)檢查圖片存放位置(文件夾存在否, 不存在則創建文件夾并退出)
4)檢查文件夾中有沒有文件,沒有則顯示信息并退出, 有則重新建表剔除非jpg格式文件。
5)檢查與處理摳圖定義了多個函數,避免程序條理混亂,不易閱讀
readkey()
-- 讀取APIkey 碼文件;
founddir()
-- 檢查存放圖片文件的文件夾是否存在,可發出提示信息;
Cutout()
-- 摳圖,含檢查圖片文件是否存在,以及剔除非jpg格式文件,并有提示;
6)主程序段,位于最后,明確提示操作準備,交互是否繼續,或取消。
7) 打包成 exe 文件(略)
1 引用有關處理包
2 定義一個函數,自附帶文件讀取 apikye 碼值
3. 定義搜索目錄的函數,返回真/假。
4 定義摳圖處理的主函數
4 主程序
以上就是關于“如何利用一行python代碼實現灰度圖摳圖”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。