2012-09-08 33 views
4

我是新來的JavaCV/OpenCV的東西,所以提前如果我是一個完整的白癡道歉......JavaCV - 識別最準確的檢測到的面部

我需要檢測「主/主「臉上的圖像(這個圖像大部分將是一個」個人資料圖片「),臉部識別是不需要的。

由於事實不同haarcascade文件中的每個檢測不同的面孔和偵測到的臉部有時並不真正面臨的圖像中,但任意神器,我需要決定使用其中的面孔。 假設檢測到的臉部是真實的臉部,使用最大的臉部是有意義的,因爲它是個人資料圖片。

我遇到的主要問題是,代碼檢測到(對於某些圖像)更多的1張臉,最大的臉實際上不是人臉。 下面是我的一個測試的例子,其中代碼檢測到2張臉,其中1張是真人臉,另一張是女人的胸圍,恰好她的胸圍比她的臉大。

面:java.awt.Rectangle[x=62,y=42,width=78,height=78]面積6084
胸圍:java.awt.Rectangle[x=86,y=144,width=80,height=80]

區域,這樣我在短的問題,如果我有多個檢測到的面部,是否有某種評級量表,我可以用它來確定哪個面孔與OpenCV看到的面孔最匹配?

+0

你是如何做人臉檢測?諸如'CV_HAAR_DO_CANNY_PRUNING'之類的選項在這些情況下實際上可以起到幫助作用,但還有其他一些選項可供嘗試...... –

+1

_你知道你在寫關於主題幷包含文本的真棒堆棧溢出問題「她的胸圍比她的臉龐大「 – Xan

回答

1

不幸的是,臉部檢測不能爲您提供這樣的選項。 我猜你的代碼看起來是這樣的:

CvSeq faces = cvHaarDetectObjects(grayImage, cascade, ......); 

所以,你得到一個CvSeq這實際上是沒有什麼比一個指針矩形,其限制臉上的序列多。你沒有更多的信息。

通常,我會說胸圍低於頭部(甚至更多,頭部高於身體的其餘部分),除了在一些特殊情況下)。

您可以簡單地利用Y位置丟棄胸圍。

如果其他非身體部位的元素被檢測爲臉部,那麼你註定要失敗。