映画「アバター」のように、人間の肌の色を青に変えたいです。次のコードを使用して、肌の色のピクセルを決定し、それらの色を置き換えました。
/*
R > 95 AND G > 40 AND B > 20 AND
max{R, G, B} – min{R, G, B} >15 AND
|R – G| > 15 AND
R > G AND R > B
OR
R > 220 AND G > 210 AND B > 170 AND
|R – G| <= 15 AND
R > B AND G > B */
if(((red>95)&&(green>40)&&(blue>20)&&(red-green>15)&&(red>green)&&(red>blue))||((red>220)&&(green>210)&&(blue>170)&&(red-green<=15)&&(red>blue)&&(green>blue))){
data[i]=255;
data[i+1]=100-(190-red);
data[i+2]=200-(190-green);
data[i+3]=255;
}
この方法は、ダウンロードした顔画像の色白の肌に適しています。
しかし、私がカメラから実際の写真を撮るとき、それは皮膚全体を着色するのではなく、部分だけを着色します:
さまざまな肌の色の肌の色のピクセルを置き換える方法はありますか?