OpenCV 基於YCrCb顏色空間的膚色檢測

2021-08-15 14:53:55 字數 1106 閱讀 2570

膚色ycbcr顏色空間是一種常用的膚色檢測的色彩模型,其中y代表亮度,cr代表光源中的紅色分量,cb代表光源中的藍色分量。人的膚色在外觀上的差異是由色度引起的,不同人的膚色分布集中在較小的區域內。膚色的ycbcr顏色空間cbcr平面分布在近似的橢圓區域內,通過判斷當前畫素點的cbcr是否落在膚色分布的橢圓區域內,就可以很容易地確認當前畫素點是否屬於膚色。將影象轉換到ycbcr空間並且在cbcr平面進行投影,可以採集到膚色的樣本點。

將cbcr平面均分為許多小區域,將每個區域的中心點cbcr色度值作為當前區域的特徵值,對膚色區域畫素值進行遍歷,如果當前畫素值落在該區域內則替換當前區域特徵值。

**實現:

int main()

} //形態學閉操作

cv::morphologyex(temp, temp, cv::morph_close, element);

//定義輪廓引數

std::vector> contours;

std::vector> tempcontours;

std::vectorhierarchy;

//查詢連通域

//cv_retr_external:只檢測出最外輪廓

cv::mat tmp(image.size(), cv_8uc1, cv::scalar::all(0));

//篩選的輪廓

for (int i = 0; i < contours.size(); i++)

cv::imshow("temp", tmp);

temp.setto(0);

//繪製輪廓

cv::mat result;

cv::drawcontours(temp, tempcontours, -1, cv::scalar(255, 0, 0), cv_filled);

image.copyto(result, temp);

cv::imshow("result", result);

cv::waitkey(0);

return 0;

}

執行結果:

基於OpenCv的(YCrCb 顏色空間的膚色檢測

基於opencv的 ycrcb 顏色空間的膚色檢測 yuv空間 一 yuv即ycrcb,是被歐洲電視系統所採用的一種顏色編碼方法。y 表示明亮度 luminance或luma 即灰階值 u 和 v 表示的則是色度 chrominance或chroma 作用是描述影像色彩及飽和度,用於指定畫素的顏色。...

基於Opencv的顏色識別

hsv模型中顏色的引數分別是 色調 h hue 飽和度 s saturation 亮度 v value 由a.r.smith在1978年建立的一種顏色空間,也稱六角錐體模型 hexcone model 1 色調 h hue 用角度度量,取值範圍為0 360 從紅色開始按逆時針方向計算,紅色為0 綠色...

OpenCV基於python改變顏色空間

opencv中有超過150種顏色空間轉換方法。但是我們將研究只有兩個最廣泛使用的,bgr gray和bgr hsv。對於顏色轉換,我們使用cv函式。cvtcolor input image,flag 其中flag決定轉換的型別。對於bgr gray轉換,我們使用標誌cv.color bgr2gray...