[英]How can I use dlib face detection without I/O on data saveload from byte array?
[英]How to obtain a “mugshot” from face detection squares?
我正在構建一個應用程序,它將拍攝一個人的整個身體的圖像,並將為該人產生一個“照片”。
Mugshot意味着一個人的整個臉,脖子,頭發和耳朵的圖像與另一個照片的大小相同。
目前我正在使用
http://askernest.com/archive/2008/05/03/face-detection-in-c.aspx
實現OpenCV,我正在使用
harrcascade_frontalface_default.xml
harrcascade_frontalface_alt.xml
harrcascade_frontalface_alt2.xml
harrcascade_frontalface_alt_tree.xml
作為我的級聯。
我使用了所有級聯,因為單個級聯不會檢測到我的所有臉。 在我得到所有級聯檢測到的所有面部后,我找到了我的平均正方形,然后使用它來判斷我的最終應該是什么樣的高度和寬度。
我的問題是3部分。
我目前的過程相當緩慢。 如何加快檢測過程?
編輯:我發現處理時間與照片尺寸直接相關。 減少照片的大小可能會有所幫助。
單個級聯不會檢測到我遇到的所有面孔,所以我正在使用它們。 這當然會產生許多不同的方塊和一些誤報。 我可以使用什么方法來識別誤報並將其排除在平均平方計算之外? 恩。
編輯:我正在實現標准偏差范圍內的平均值。 將盡快發布代碼。
考慮到臉部的方形坐標,我不確定找到最佳方法的最佳方法。 我在哪里可以找到面對照片的比例?
編輯:解決了這個問題。 假設我的頭都是他們臉的比例。
static public Rectangle GetMugshotRectangle(Rectangle rFace) { int y2, x2, w2, h2; //adjust as neccessary double heightRatio = 2; y2 = Convert.ToInt32(rFace.Y - rFace.Height * (heightRatio - 1.0) / 2.0); h2 = Convert.ToInt32(rFace.Height * heightRatio); //height to width ratio is 1.25 : 1 in mugshots w2 = Convert.ToInt32(h2 * 4 / 5); x2 = Convert.ToInt32((rFace.X + rFace.Width / 2) - w2 / 2); return new Rectangle(x2, y2, w2, h2); }
我只需要擺脫那些誤報。
好吧,這4個問題。
如果以這種方式設置,單個級聯可以執行你的所有級聯所做的事情,而且它不會給你幾個結果來判斷。 您使用的級聯在他們制作的教學圖片集合或某些參數中可能不同。
可以在此處找到有關如何構建自己的級聯的教程。 獲取用於訓練您使用的四個級聯的圖片會很有用,但我不知道它們是否公開可用。
我建議你使用上半身哈爾級聯文件,它將返回矩形直到肩膀。 請在“ http://alereimondo.no-ip.org/OpenCV/34 ”找到頭肩級聯文件
好吧,我想出來了,但目前這個項目還在冰上。
我沒有要粘貼的源代碼,因為VM需要永遠加載。
如果有人真的感興趣,請告訴我,我會發布。
如果你看到的東西看起來可以做得更好,請告訴我。
我采取的步驟如下。
完成!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.