首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

影像處理:利用遮罩提取圓形石英片區域(去除圓外背景)

     編輯:程式設計綜合問答

目標:從影像中擷取中央圓形石英片,移除圓外區域。最直接、非程式化的方法是使用 Photoshop 等圖像編輯軟體手動建立圓形遮罩;若需自動化批次處理,則使用 OpenCV 程式化實作。

方法一:Photoshop 手動操作(單張/少量)

  1. 開啟影像,選取「橢圓選框工具」,按住 Shift 拖曳畫出正圓選區對準石英片邊緣。
  2. 點擊圖層面板「添加向量蒙版」圖示,圓外區域即被遮罩隱藏。
  3. 另存為 PNG 保留透明背景,或套用圖層蒙版後裁切存檔。

方法二:OpenCV 自動化腳本(批次/整合系統)

import cv2
import numpy as np

img = cv2.imread('quartz.jpg')
h, w = img.shape[:2]
center = (w//2, h//2)
radius = min(w, h)//2 - 10  # 依實際留白調整

# 建立圓形遮罩
mask = np.zeros((h, w), dtype=np.uint8)
cv2.circle(mask, center, radius, 255, -1)

# 應用遮罩
result = cv2.bitwise_and(img, img, mask=mask)

# 若需透明背景,轉 BGRA 並以 mask 為 Alpha 通道
result_bgra = cv2.cvtColor(result, cv2.COLOR_BGR2BGRA)
result_bgra[:,:,3] = mask
cv2.imwrite('quartz_extracted.png', result_bgra)

關鍵步驟說明

  • 圓心/半徑估計:若石英片位置固定可硬編碼;否則用霍夫圓檢測(cv2.HoughCircles)自動擬合。
  • 邊緣羽化:遮罩邊緣可用 cv2.GaussianBlur(mask, (5,5), 0) 柔化,避免鋸齒。
  • 背景填充:若不需透明,可直接 result[mask==0] = [255,255,255] 填白底。

工具選擇建議

單張或原型驗證用 Photoshop 最快;需整合至生產線、處理數千張則撰寫 OpenCV/Python 腳本並部署至伺服器。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved