2014-03-25 32 views
1

我嘗試使用教程代碼from opencv tutorials來檢測臉部。所有級聯正確加載但調用detectMultiScale爲什麼不返回面孔?

faceCascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(20, 20)); 

我沒有得到任何人臉後,這意味着faces.size()返回0 是否有人打了這個代碼?它工作嗎?我可能錯了什麼?

+0

如果你自己解決這個問題,建議回答你自己的問題,並接受它。 –

回答

0

您指定的最小檢測對象大小爲(20,20)。也許你的圖像包含面積小得多的面孔。嘗試將其更改爲較小的數字。

本頁解釋detectMultiScale功能的各種參數:

http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html

+0

謝謝你的提示,但我玩過各種尺寸,我也知道建議的手冊,以及其他許多人。這個調用detectMultiScale是很奇怪的。在將.xml文件移動到程序目錄之後,我編譯了獨立的示例代碼並且它可以工作。但是,當我在自己的班級中使用它作爲一種方法時,它不起作用。我試圖改變從VideoCapture獲取它的捕獲流,但也沒有結果。也許.xml文件錯誤。你知道如何檢查它嗎?這是更多的東西。我檢查了我在Python中使用的所有方法,並且它們正在工作。可能是 –

+0

。是否可以共享代碼? –

+0

好的,我使用了CascadeClassifier類的cascade.empty()方法,它返回True。然後怎樣呢? –

1

正如我已經寫了3月28日在'14 11:57我已經在級聯如果加載顯示的代碼部分有一個bug。不是。 XML文件必須在編目 這是解決

+0

@StefanoSanfilippo他的帖子實際上是作爲一個答案。這就是他解釋爲什麼的原因。 「XML文件必須在編程中」我認爲是他找到的解決方案。 – sashoalm

+0

@sashoalm我不得不承認,這是否是答案並不清楚,但是再想一想,你是對的。 –

+0

謝謝你的理解。是的,解決方案是將xml文件放入程序目錄(文件夾)中。 –