s1093306 作業5
一.作業說明 :
利用你所學的 顏色(Color)的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚 區域並將其標示出。(請用附件中的三張照片做測試) Write a program that detect skin color from an image.
二.開發環境 :
- 作業系統: Windows10
- 編譯器: Visual Studio 2019
- 程式語言: C++
- OpenCV版本: 4.7.0
三.程式說明 :
1.讀圖: 用cv2.imread()讀取圖片
2.將圖像轉換為HSV和YCrCb色彩空間: 分別用cv2.cvtColor將RGB圖片轉成HSV和YCrCb4.用bitwise_and()將HSV和YcrCb色彩空間篩選結果合成mask。
3.將兩個的色彩空間設在膚色可被偵測的像素區間然後建立黑白遮罩:
使用 inRange()限制偵測範圍。
限定HSV的範圍:0<H<50,41<S<255,0<V<255(色相(H),飽和度(S),明度(V))
限定YCrCb的範圍: 55<Y<240,55<Cr<240,55<Cb<240(Y(亮度),Cb(藍色色度),Cr(紅色色度)
5.對遮罩進行處理,以去除小的雜訊以及填補空洞。
使用getStructuringElement()用來建立結構元素先分析固定區域內的像素以提取特定的圖像結構。
使用erode()、dilate()函式對遮罩執行腐蝕和擴張操作來去除小雜訊。
6.用setTo()將mask設定像素值為綠色。
7.用addWeighted()將原圖和mask合成呈現。
四.結果圖 :
留言
張貼留言