一、作業題目:
利用你所學的顏色的知識與技術,撰寫一個程式來偵測一張輸入照片中的皮膚區域並將其標示出。
二、操作環境:
作業系統: Windows 10
程式語言:c++
編譯器:visual studio
三、操作過程:
首先先設置一個單通道的256*256大小的二維矩陣,全0填充完也就是黑色的了。
Mat skinCrCbHist = Mat::zeros(Size(256, 256), CV_8UC1);//256*256的矩陣,相當於CrCb分量的橫縱坐標。
然後再上面畫一個橢圓,具體位置大小角度等是固定的了,這是前人實驗總結出來的。
ellipse(skinCrCbHist, Point(113, 155.6), Size(23.4, 15.2), 43.0, 0.0, 360.0, Scalar(255, 255, 255), -1);//畫橢圓,-1表示全填充,也就是說這個橢圓是全白的
接下來把獲取的圖像轉為YCrCb顏色模型的圖像,由於用這個模型就是為了排除Y(亮度)的影響,所以橫縱坐標分別是Cb,Cr,看上面的圖就知道了。轉完後,遍歷轉完圖像的像素點,看其後兩個通道的值,也就是Cb,Cr的值,轉到前面的掩模上就是它的橫縱坐標,那我們之前根據這個坐標,對應到的位置如果在橢圓裡面,之前橢圓是白色的嘛,底是黑色的,那麼說明這個點是膚色點了。
沒有留言:
張貼留言