使用 C# 和 EmguCV 來進行 去背(背景去除) 的範例程式碼。這段程式碼使用 GrabCut 方法來進行前景與背景分割,適用於大多數圖片的去背需求。
步驟概述
- 載入影像
- 轉換為灰階(可選)
- 使用 GrabCut 進行前景提取
- 建立遮罩並去除背景
- 輸出去背結果
C# + EmguCV 去背程式碼
程式碼說明
- 讀取圖片 (
CvInvoke.Imread)
這部分讀取原始圖片,確保圖片存在。 - 建立遮罩 (
Mat mask)
mask會用來標記哪些部分是前景、哪些是背景。 - GrabCut 前景提取 (
CvInvoke.GrabCut)
GrabCutModes.InitWithRect會以矩形區域來初步標定前景,接著演算法會自動計算出更精確的前景範圍。 - 生成最終去背圖片 (
CvInvoke.Compare)
透過Compare方法將非前景區域設為黑色,然後使用CopyTo建立最終去背結果。 - 輸出並儲存 (
CvInvoke.Imwrite)
產生去背結果並存成 PNG(保留透明背景)。
適用場景
✔ 拍攝清楚的物體(對比明顯)
✔ 前景與背景區別明顯的圖片
如果背景較為複雜,可以改進:
- 手動標記前景區域(更精準)
- 使用深度學習模型(如 U-Net 或 MODNet)
這段程式碼已經能基本實現去背功能
OpenCV 實作篇-圖像分割(GrabCut Technique)
可參考此網址內容: 網址
請先 登入 以發表留言。