void extractSkinColor(IplImage * frameImage, IplImage * hsvImage,IplImage * skinImage)
{
CvScalar color; // HSV表色系で表した色
unsigned char h; // H成分
unsigned char s; // S成分
unsigned char v; // V成分
// BGRからHSVに変換する
cvCvtColor(frameImage, hsvImage, CV_BGR2HSV);
//肌色抽出
//ここで2値化したキャプチャー画像の高さと幅の大きさだけ処理をする
for (int x = 0; x < skinImage->width; x++) {
for (int y = 0; y < skinImage->height; y++) {
//BGRからHSVに変換した画像のy座標,x座標のh:s:vの情報を各コンテナに格納する
color = cvGet2D(hsvImage, y, x);
h = color.val[0];
s = color.val[1];
v = color.val[2];
//肌色の時はy座標,x座標の所を白色にする。 それ以外の時は黒色にする
if (h <= hmax && h >= hmin &&
s <= smax && s >= smin && v <= vmax && v >= vmin) {
// 肌色の場合
cvSetReal2D(skinImage, y, x, 255);
} else {
cvSetReal2D(skinImage, y, x, 0);
}
}
}
}
最終更新:2010年02月01日 09:28