void extractSkinColor(IplImage * frameImage, IplImage * hsvImage,

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
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。