【開源】基于RMBG的一鍵摳圖與證件照制作系統【含一鍵啟動包】

《博主簡介》

小伙伴們好,我是阿旭。專注于人工智能、AIGC、python、計算機視覺相關分享研究。
?更多學習資源,可關注公-仲-hao:【阿旭算法與機器學習】,共同學習交流~
👍感謝小伙伴們點贊、關注!

《------往期經典推薦------》

一、AI應用軟件開發實戰專欄【鏈接】

項目名稱項目名稱
1.【人臉識別與管理系統開發】2.【車牌識別與自動收費管理系統開發】
3.【手勢識別系統開發】4.【人臉面部活體檢測系統開發】
5.【圖片風格快速遷移軟件開發】6.【人臉表表情識別系統】
7.【YOLOv8多目標識別與自動標注軟件開發】8.【基于YOLOv8深度學習的行人跌倒檢測系統】
9.【基于YOLOv8深度學習的PCB板缺陷檢測系統】10.【基于YOLOv8深度學習的生活垃圾分類目標檢測系統】
11.【基于YOLOv8深度學習的安全帽目標檢測系統】12.【基于YOLOv8深度學習的120種犬類檢測與識別系統】
13.【基于YOLOv8深度學習的路面坑洞檢測系統】14.【基于YOLOv8深度學習的火焰煙霧檢測系統】
15.【基于YOLOv8深度學習的鋼材表面缺陷檢測系統】16.【基于YOLOv8深度學習的艦船目標分類檢測系統】
17.【基于YOLOv8深度學習的西紅柿成熟度檢測系統】18.【基于YOLOv8深度學習的血細胞檢測與計數系統】
19.【基于YOLOv8深度學習的吸煙/抽煙行為檢測系統】20.【基于YOLOv8深度學習的水稻害蟲檢測與識別系統】
21.【基于YOLOv8深度學習的高精度車輛行人檢測與計數系統】22.【基于YOLOv8深度學習的路面標志線檢測與識別系統】
23.【基于YOLOv8深度學習的智能小麥害蟲檢測識別系統】24.【基于YOLOv8深度學習的智能玉米害蟲檢測識別系統】
25.【基于YOLOv8深度學習的200種鳥類智能檢測與識別系統】26.【基于YOLOv8深度學習的45種交通標志智能檢測與識別系統】
27.【基于YOLOv8深度學習的人臉面部表情識別系統】28.【基于YOLOv8深度學習的蘋果葉片病害智能診斷系統】
29.【基于YOLOv8深度學習的智能肺炎診斷系統】30.【基于YOLOv8深度學習的葡萄簇目標檢測系統】
31.【基于YOLOv8深度學習的100種中草藥智能識別系統】32.【基于YOLOv8深度學習的102種花卉智能識別系統】
33.【基于YOLOv8深度學習的100種蝴蝶智能識別系統】34.【基于YOLOv8深度學習的水稻葉片病害智能診斷系統】
35.【基于YOLOv8與ByteTrack的車輛行人多目標檢測與追蹤系統】36.【基于YOLOv8深度學習的智能草莓病害檢測與分割系統】
37.【基于YOLOv8深度學習的復雜場景下船舶目標檢測系統】38.【基于YOLOv8深度學習的農作物幼苗與雜草檢測系統】
39.【基于YOLOv8深度學習的智能道路裂縫檢測與分析系統】40.【基于YOLOv8深度學習的葡萄病害智能診斷與防治系統】
41.【基于YOLOv8深度學習的遙感地理空間物體檢測系統】42.【基于YOLOv8深度學習的無人機視角地面物體檢測系統】
43.【基于YOLOv8深度學習的木薯病害智能診斷與防治系統】44.【基于YOLOv8深度學習的野外火焰煙霧檢測系統】
45.【基于YOLOv8深度學習的腦腫瘤智能檢測系統】46.【基于YOLOv8深度學習的玉米葉片病害智能診斷與防治系統】
47.【基于YOLOv8深度學習的橙子病害智能診斷與防治系統】48.【車輛檢測追蹤與流量計數系統】
49.【行人檢測追蹤與雙向流量計數系統】50.【基于YOLOv8深度學習的反光衣檢測與預警系統】
51.【危險區域人員闖入檢測與報警系統】52.【高密度人臉智能檢測與統計系統】

二、機器學習實戰專欄【鏈接】,已更新31期,歡迎關注,持續更新中~~
三、深度學習【Pytorch】專欄【鏈接】
四、【Stable Diffusion繪畫系列】專欄【鏈接】
五、YOLOv8改進專欄【鏈接】持續更新中~~
六、YOLO性能對比專欄【鏈接】,持續更新中~

《------正文------》

背景

當前AI摳圖技術已經非常成熟,并且有效果非常好的開源模型。 日常中可以用于物品摳圖、替換證件照背景等場景,但是網上許多的證件照替換背景竟然還需要收費。今天就給大家分享一個自己制作的可以一鍵啟動的【一鍵摳圖與制作證件照的系統】,感興趣的小伙伴可以自行下載體驗,感謝大家的點贊關注。

效果如下:
在這里插入圖片描述
在這里插入圖片描述

項目實現思路

本項目主要是基于RMBG進行實現的,使用onnx模型進行目標摳出,然后對背景進行處理替換顏色。核心代碼如下:

定義相關函數

首先我們定義一個摳圖函數rmbg和替換背景顏色函數add_background_to_image如下所示:
摳圖函數rmbg代碼:

def rmbg(input_image_path,  background_color, out_size_w, out_size_h, size_opt):if size_opt == "保持原圖大小":shape = cv2.imread(input_image_path).shapeout_size = (int(shape[0]),int(shape[1]))else:out_size = (int(out_size_w), int(out_size_h))print('input_image_path:',input_image_path)name = os.path.basename(input_image_path)path = os.path.dirname(input_image_path)filename, ext = os.path.splitext(name)ext = '.png'new_filename = filename + "_rmgb" + ext # 修改文件名out_path = path + new_filename # 摳圖new_filename = filename + "_bg" + extoutput_image_path = path + new_filename # 證件照net = BriaRMBG_ONNX(f"rmbg/onnx/model.onnx")# prepare inputmodel_input_size = [1024,1024]orig_im = io.imread(input_image_path)orig_im_size = orig_im.shape[0:2]image = preprocess_image(orig_im, model_input_size)image = np.transpose(image, (0, 3, 1, 2))  # ONNX通常需要CHW格式# inferenceresult = net(image)# post processresult_image = postprocess_image(result[0][0], orig_im_size)# save resultpil_im = Image.fromarray(result_image)no_bg_image = Image.new("RGBA", pil_im.size, (0,0,0,0))orig_image = Image.open(input_image_path)no_bg_image.paste(orig_image, mask=pil_im)no_bg_image.save(out_path, "PNG")print(background_color, out_size)add_background_to_image(out_path, output_image_path, background_color, out_size)return out_path, output_image_path

替換背景顏色函數代碼如下:

def add_background_to_image(input_image_path, output_image_path, background_color, out_size=None):"""給透明背景的PNG人像圖像添加任意顏色的背景。:param input_image_path: 輸入圖像的路徑:param output_image_path: 輸出圖像的路徑:param background_color: 背景顏色 (R, G, B):param size: 輸出圖像的大小 (width, height) 默認與輸入圖像相同"""# 打開輸入圖像image = Image.open(input_image_path)# 如果圖像不是PNG格式,先轉換為PNGif image.format != 'PNG':image = image.convert('RGBA')if out_size is None:out_size = image.sizeout_image = Image.new('RGB', image.size, background_color)out_image.paste(image, (0,0), image)out_image.resize(out_size)# 保存新的圖像out_image.save(output_image_path)

調用函數進行摳圖

import cv2
import matplotlib.pyplot as plt# 輸入圖片的路徑
input_img = 'test1.jpg'# 證件照的背景顏色
# color = "#FFFFFF" # 白色(用于護照、簽證、身份證等)
color = "#438EDB" # 藍色(用于畢業證、工作證等)
# color = "#FF0000" # 紅色(用于一些特殊的證件照)# 證件照的大小
width = 295
height = 413  # 一寸(295像素 x 413像素)# 是否保持原圖大小 
# size_opt = "不保持原圖大小"
size_opt = "保持原圖大小" # 如果選了這個會保持輸入圖片的大小,忽略上面的 證件照的大小 參數# color, width, height 這三個參數不影響摳圖,只會影響證件照的結果
out_path, output_image_path = rmbg(input_img, color, width, height, size_opt)print('摳圖后的圖片: ', out_path)
print('證件照: ', output_image_path)

原始圖片:
在這里插入圖片描述
摳圖后的圖片:
在這里插入圖片描述
替換背景顏色后的圖片:
在這里插入圖片描述

一鍵啟動使用說明

下載項目文件后,直接雙擊運行一鍵啟動.exe文件。
在這里插入圖片描述

之后會在瀏覽器自動打開,如下網頁:
在這里插入圖片描述
使用步驟:
1.在背景顏色區域自行選擇需要使用的背景顏色;
2.在證件尺寸大小區域選擇需要的證件尺寸大小;
3.上傳需要進行摳圖的圖片,然后點擊提交按鈕。
即可獲取所摳出的圖像,與替換背景后的圖像,結果如下所示:
在這里插入圖片描述
點擊每張圖片結果的右上角的下載按鈕,即可下載生成后的圖片。
在這里插入圖片描述

該項目不僅可以輕松摳出人物圖像,也可以實現其他物品的摳圖,效果如下,小伙伴們可以自行體驗。
在這里插入圖片描述


關注文末名片G-Z-H:【阿旭算法與機器學習】,發送【開源】即可免費獲取

在這里插入圖片描述

好了,這篇文章就介紹到這里,喜歡的小伙伴感謝給點個贊和關注,更多精彩內容持續更新~~
關于本篇文章大家有任何建議或意見,歡迎在評論區留言交流!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/42550.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/42550.shtml
英文地址,請注明出處:http://en.pswp.cn/web/42550.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【Linux】System V信號量詳解以及semget()、semctl()和semop()函數講解

💐 🌸 🌷 🍀 🌹 🌻 🌺 🍁 🍃 🍂 🌿 🍄🍝 🍛 🍤 📃個人主頁 :阿然成長日記 …

Kotlin構造函數

目錄 構造函數類型 主構造函數 成員變量設置 私有化操作 次級構造函數 構造函數類型 主構造函數(主構造器)——只能有一個次構造函數(次構造器)——可以是多個 主構造函數 構造器 constructor關鍵字前 無注解或修飾符作用&…

性能監控的革命:Eureka引領分布式服務監控新紀元

性能監控的革命:Eureka引領分布式服務監控新紀元 引言 在微服務架構中,服務的分布式性能監控對于維護系統健康和優化用戶體驗至關重要。Eureka作為Netflix開源的服務發現框架,為服務的注冊與發現提供了強大支持,而結合其他工具&…

數字化轉型:企業法務管理的未來發展 ???

在數字化浪潮的推動下,企業法務管理正經歷著前所未有的變革。傳統的法務工作模式在數據處理、合同審查、風險評估等方面逐漸顯得力不從心。面對這一挑戰,企業法務管理的數字化轉型成為提升效率、保障合規、優化法律服務的必然選擇。 數字化轉型涉及到法…

HTML(30)——動畫

動畫 實現步驟 定義動畫 keyframes 動畫名稱{ from{} to{} } keyframes 動畫名稱{ 0%{} 10%{} .... 100%{} } 2.使用動畫 animation:動畫名稱 動畫花費時間; 示例&#xff1a;盒子的寬度從200變到400px&#xff0c;兩個狀態一般用from to的形式 <style>.box {width: …

解析Xml文件并修改QDomDocument的值

背景&#xff1a; 我需要解決一個bug&#xff0c;需要我從xml中讀取數據到QDomDocument&#xff0c;然后獲取到我想要的目標信息&#xff0c;然后修改該信息。 ---------------------------------------------------------------------------------------------------------…

各大常用代碼編輯器的快捷鍵集合

visualstudio2017 快捷鍵 多行注釋 crtl / 取消多行注釋crtl Q 代碼跳轉返回 crtl /- visualcode快捷鍵 代碼跳轉返回 crtl 左鍵/右鍵 androidstudio快捷鍵 代碼跳轉返回 crtl alt 左鍵/右鍵

VUE中ECharts提示框tooltip自動切換

目錄 前言1導入插件2定義參數3 插件API 前言 使用VUE開發的數據大屏統計&#xff0c;又需要將 echarts的提示框 tooltip 實現自動切換&#xff0c;網上有個很簡單的插件&#xff08;echarts-tooltip-auto-show&#xff09;&#xff0c;使用教程簡單分享給大家。 自動每隔幾秒切…

哦華為倉頡語言

本來我不太想說的&#xff0c;奈何有不少粉絲提問提到了這語言&#xff0c;目前的情況我不透露太多&#xff0c;看過這課程C實現一門計算機編程語言到手擼虛擬機實戰的懂的自然懂。 在互聯網領域幾乎大部分應用軟件運行在X86 LINUX上居多&#xff0c;如果你有問題可以先學習這…

多版本python環境中,讓python3固定指向其中一個python可執行文件

如果你只安裝一個python環境&#xff0c;那么一般可執行文件名就叫python.exe和pythonw.exe 但是如果你有多個python環境時&#xff0c;可執行文件名是需要進行修改的&#xff0c;使得在安裝庫和調用時能夠分辨python環境&#xff0c;比如我的電腦中裝有python3.10和python2.x …

Transformer模型論文解讀、源碼分析和項目實踐

本文是ChatGPT系列的開篇之作&#xff0c;為什么吧Transformer放到這里呢&#xff0c;因為不管是chatgpt-1&#xff0c; chatgpt-2&#xff0c; chatgpt-3都是以Transformer作為底層基礎來實現&#xff0c;相當于chatgpt系列的老祖先了。如果想要深入的了解清楚chatgpt的來龍去…

AcWing 4173. 線段 (貪心)

數軸上有 n 條線段&#xff0c;選取其中 k 條線段使得這 k&#x1d458; 條線段兩兩沒有重合部分&#xff0c;問 k 最大為多少。 輸入格式 第一行為一個正整數 n&#xff1b; 在接下來的 n 行中&#xff0c;每行有 2 個數 ai,bi&#xff0c;描述每條線段的左右端點坐標。 輸…

BUUCTF[堆][of_by_one]

堆中of_by_one 介紹&#xff1a; 嚴格來說 off-by-one 漏洞是一種特殊的溢出漏洞&#xff0c;off-by-one 指程序向緩沖區中寫入時&#xff0c;寫入的字節數超過了這個緩沖區本身所申請的字節數并且只越界了一個字節。溢出字節為可控制任意字節 &#xff1a;通過修改大小(size…

token無感刷新方法

1.這里推薦去看這個老師的視頻,我的方案都是根據他的視頻來的視頻地址 2.這邊使用的工具是axios import axios from axios const service axios.create({baseURL: ,headers: {Authorization: token 你自己的token,},timeout: 1000 * 60, })// 攔截響應 service.interceptors…

Spring AOP源碼篇四之 數據庫事務

了解了Spring AOP執行過程&#xff0c;再看Spring事務源碼其實非常簡單。 首先從簡單使用開始, 演示Spring事務使用過程 Xml配置&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <beans xmlns"http://www.springframework.org/schema…

【北京迅為】《i.MX8MM嵌入式Linux開發指南》-第一篇 嵌入式Linux入門篇-第十六章 Linux 第一個程序 HelloWorld

i.MX8MM處理器采用了先進的14LPCFinFET工藝&#xff0c;提供更快的速度和更高的電源效率;四核Cortex-A53&#xff0c;單核Cortex-M4&#xff0c;多達五個內核 &#xff0c;主頻高達1.8GHz&#xff0c;2G DDR4內存、8G EMMC存儲。千兆工業級以太網、MIPI-DSI、USB HOST、WIFI/BT…

S271系列RTU在旅游景區人流監控中的應用案例

S271系列RTU在旅游景區人流監控中的應用案例 隨著全球旅游業的迅猛發展&#xff0c;旅游景區的管理者越來越關注如何利用先進的技術手段提升游客體驗、優化管理效率以及確保安全。S271系列RTU作為一款先進的無線工業物聯網設備&#xff0c;在旅游景區的人流監控中展現出了其獨…

數據結構:順序表+鏈表

數據結構&#xff1a;順序表鏈表 一。順序表&#xff1a; 首先在了解順序表和鏈表之前&#xff0c;先了解一下線性表&#xff0c;**線性表&#xff08;linear list&#xff09;**是n個具有相同特征元素的有限序列 &#xff0c;在邏輯上是線性結構&#xff0c;也就是一條連續的…

自動化升級:Conda包依賴的智能更新策略

自動化升級&#xff1a;Conda包依賴的智能更新策略 引言 在科學研究和軟件開發中&#xff0c;依賴管理是確保項目順利進行的關鍵環節。Conda作為流行的包管理器&#xff0c;提供了強大的依賴更新功能&#xff0c;幫助用戶自動化和簡化依賴項的更新過程。本文將深入探討如何在…

WPF依賴附加屬性

依賴附加屬性的定義 基本過程&#xff1a;聲明、注冊、包裝 依賴附加屬性必須在依賴對象&#xff0c;附加屬性不一定&#xff0c;關注的是被附加的對象是否是依賴對象 快捷方式&#xff1a;propa tab 關鍵字&#xff1a;RegisterAttached // 方法封裝 public static int …