[C#] 濾鏡筆記 – 動態模糊化、馬賽克 影像處理
2012-12-11
[C#] 透過WebClient Post Data
2012-12-10
Server 透過 WebClient 使用POST 傳送資料…
接收端:
接受 id 還有 age 兩個參數
Response.Write(Request.Form["id"]+","+Request.Form["age"]+".");
取得 id 還有 age 資料..
傳送端寫法:
string targetAddress = "http://localhost:1550/risiv.aspx";
string parameters = "id=許公蓋&age=12";
wc.Encoding = Encoding.UTF8;
wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string result = wc.UploadString(targetAddress, parameters);
Response.Write(result);
targetAddress 為目標網址
parameter為參數值
因為在.net 世界都是 UTF8 編碼 但是你不能保證其他目標端是否是UTF8
最後參數故意戴許公蓋 這是職業病要測試一下此問題..
紀錄一下,最近跟其他公司合作很常用到這方法來做 proxy.
[C#] 濾鏡筆記 – LockBits影像處理 + 浮雕效果
2012-12-09
[C#] 濾鏡筆記 – 高對比
2012-12-08
[C#] 濾鏡筆記 – 偵測人的皮膚
2012-12-07
其實人類的皮膚在一定的色域內,但是因為有光暗的明亮的關係
所以有許多演算法有加入邊界的運算等…
這邊參考了很多網站,我不是數學家,所以我把看到的幾個公式測過一次..
這邊記錄一下我測過的公式..
public static bool IsSkinColor(byte r, byte g, byte b)
{
// 公式 1 : http://www.codeproject.com/Articles/38176/Image-Processing-Skin-Detection-Some-Filters-and-E
//return ( (r > 95) && (g > 40) && (b < 20)) && ( (Math.Max(Math.Max(r, g), b)) - (Math.Min(Math.Min(r, g), b)) > 15) &&
// (Math.Abs(r - g) > 15) && (r > g) && (r > b) ||
// ( (r > 220) && (g > 210) && (b > 170) && (Math.Abs(r - g) == 15) && (r > b) && (g > b));
// 公式 2 :http://www.codeproject.com/Articles/38176/Image-Processing-Skin-Detection-Some-Filters-and-E
//if (r == 0 || b == 0 || g == 0) return false;
//return ((r/g) > 1.185) && (((r*b)/((r + g + b)*(r + g + b))) > 0.107) &&
// (((r*g)/((r + g + b)*(r + g + b))) > 0.112);
// 公式 3 :http://www.codeproject.com/Articles/8127/Skin-Recognition-in-C
//double I = (Math.Log(r) + Math.Log(b) + Math.Log(g)) / 3;
//double Rg = Math.Log(r) - Math.Log(g);
//double By = Math.Log(b) - (Math.Log(g) + Math.Log(r)) / 2;
//double hue = Math.Atan2(Rg, By) * (180 / Math.PI);
//if (I <= 5 && (hue >= 4 && hue <= 255))
//{
// return true;
//}
//else
//{
// return false;
//}
// 公式四 : http://w3.ualg.pt/~ftomaz/download/dicta2003.pdf
var Cb = (0.148 * r) - (0.291 * g) + (0.439 * b) + 128;
var Cr = (0.439 * r) - (0.368 * g) - (0.071 * b) + 128;
if ((r > 95 && g > 40 && b > 20 && (Math.Max(Math.Max(r, g),
b) - Math.Min(Math.Min(r, g), b) > 15) && (r - g) > 15 &&
r > g && r > b) &&
(Cr > 140 && Cr < 162 || Cb > 105 && Cb < 130))
{
return true;
}
else
{
return false;
}
}
訂閱:
文章 (Atom)