我面臨檢測picureBox1中加載的圖像中的皮膚顏色的問題,我實現了下面的文章中的公式。ArgumentException在C#代碼中的錯誤
我需要你的建議,使我的代碼工作。
感謝
代碼:
Bitmap bm = (Bitmap)pictureBox1.Image;
Bitmap bmp = new Bitmap(pictureBox1.Image.Width, pictureBox1.Image.Height);
Color color = new Color();
double Cb,Cr,r,g,b,R,G,B;
double CbMean = 156.56;
double CrMean = 117.43;
double K1 = 160.13 ;
double K2 = 12.143;
double K3 = 12.143;
double K4 = 299.46;
for (int i = 0; i < pictureBox1.Width; i++)
{
for (int j = 0; j < pictureBox1.Height; j++)
{
color = bm.GetPixel(i, j);
R = Convert.ToDouble(color.R);
G = Convert.ToDouble(color.G);
B = Convert.ToDouble(color.B);
r = R/(R+G+B);
g = G/(R+G+B);
b = B/(R+G+B);
Cb = (-0.169 * r - 0.331 * g + 0.500 * b);
Cr = (0.500 * r - 0.418 * g - 0.082 * b);
Cb -= CbMean;
Cr -= CrMean;
double CbDist = (K1 * Cb) + (K3 * Cr);
double CrDist = (K2 * Cb) + (K4 * Cr);
double CbDist1 =(0.5 * Cb) + (0.5 * Cr);
double CrDist1 = (0.5 * Cb) + (0.5 * Cr);
double dist = CbDist + CrDist;
double dist1 = CbDist1 + CrDist1;
double gmm = Math.Exp(dist * dist1);
bmp.SetPixel(i, j, Color.FromArgb(255, (int)gmm, (int)gmm, (int)gmm));
}
}
你能提供更多關於你所看到的錯誤的信息嗎? – bhamlin
ArgumentException在代碼的最後一行(bmb.setpixel ...)中處理,但是,有時我只能看到黑色圖像。 –
也許你的'gmm'值大於255? –