基於膚色高斯概率模型的人臉檢測

2021-08-20 00:14:10 字數 2202 閱讀 8358

#include 

#include "opencv2/opencv.hpp"

#include

using

namespace

std;

using

namespace cv;

void fillhole(mat * src);//基於漫水填充的孔洞填充

#define pi 3.14156

void main ()

//基於高斯膚色概率模型的人臉檢測結果

const

char * src_namedwindow = "src";

imshow (src_namedwindow , src);

mat tempimg ;

cvtcolor (src, tempimg,cv_rgb2ycrcb );//將顏色空間從rgb轉換為ycrcb

vector

channels;

split (tempimg,channels);//分離出crcb通道

mat cr_img, cb_img;

cr_img = channels[1];

cb_img = channels[2];

//利用二維高斯概率模型計算每個畫素點的膚色相似度

mat pro(cr_img.size(), cv_32fc1 );//定義相似度矩陣

for (int i = 0; ifor (int j = 0; j < src.cols ; j++)

//imshow ("相似度矩陣", pro );

//相似度矩陣歸一化

//double min1=0, max1=0;

//minmaxidx (pro, &min1, &max1);

//cout << max1 << endl;

//mat nor = pro/max1;

mat nor;

normalize (pro, nor,0,1,norm_minmax );

//imshow("歸一化矩陣", nor);

mat mask1 = mat :: zeros (pro.size(), cv_32fc1 );//膚色區模板

mat mask2 (mask1.size(), cv_8uc1 );

double thresh_face = 0.5;//膚色閾值

for (int i = 0; i < nor.rows; i++ )

for ( int j = 0; j < nor.cols ; j++)

imshow("人臉模板", mask1);

mat element1 = getstructuringelement (morph_rect,size(3,3));

erode(mask1, mask1,element1, point(-1,-1), 2);

mat element2 = getstructuringelement (morph_ellipse, size(5,5));

dilate (mask1, mask1,element2);

threshold(mask1, mask2, 0,255,cv_thresh_binary );//將mask1轉為二值圖

mask2.convertto (mask2, cv_8uc1 );//將矩陣轉為

//二值化圖孔洞填充

fillhole(&mask2);

imshow ("填充後", mask2);

//輪廓查詢

vector

> contours;

vector

hierarchy;

//篩選輪廓

vector

label;

int add_lable = 0;

vector

boundrect(contours.size());//定義外接矩形集合

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

}imshow("mask2", mask2);

imshow("人臉區",src);

waitkey(0);

//system ("pause");

}void fillhole2(mat *src)//利用漫水填充進行孔洞填充

孔洞填充

影象計算

人臉檢測—基於膚色高斯概率的檢測實現

人臉膚色檢測模型

一 概述 建立模型就是在已知物件的特徵基礎上來給物件建立乙個模型,並藉此對物件實現判斷 檢測 繪製 控制等功能。人臉建模的方式很多,各有各的優缺點 膚色模型較之幾何模型來,要相對簡單,執行速度快。而在膚色模型中常用的是高斯模型。二 建模 1 高斯膚色模型 從圖 2 9 中可以看出膚色在 cr cb ...

基於RGB模型和HBV模型的簡單膚色檢測器

在網上找了一些,提取了一部分膚色的rgb和hbv模型的引數值。讀取並得到他的三維矩陣 imshow i r i 1 紅色通道 轉化為unit8型別 0 255 取其中一維 g i 2 綠色通道 b i 3 藍色通道 id r 150 g 100 g 210 b 90 b 200 g b 40 r g...

基於OpenCV的簡單的人臉檢測

這個是在數字影象處理課程裡面的乙個小實踐內容。參考網上已有 重新配置編譯,效果不錯。人臉識別的庫使用的是haarcascade frontalface檔案,包含在opencv當中的。關鍵部分 如下 本原始碼只為學習交流之用 typersever from gzhu static cvmemstora...