2011-11-16 55 views
4

我正在研究需要使用Haar級聯分類器進行OpenCV對象檢測的應用程序。 我在64位Windows機器上使用OpenCV 2.3.1和VS2010。 我自己編譯和構建OpenCV,並沒有使用任何預編譯的二進制文件。OpenCV facedetect示例不會加載級聯分類器xml

首先,我想開始插手OpenCV中包含的示例facedetect.cpp。 我沒有錯誤地構建它,但是當我嘗試運行時它不會打開級聯分類器xml文件(CascadeClassifier.load()函數返回false)。我沒有從示例源代碼中更改任何內容。

我正在使用與OpenCV一起發佈的xml文件,所以問題不在xml文件中。 我也確保應用程序可以使用簡單的fopen訪問和讀取文件。

我相信(但不確定)問題似乎是級聯分類器是「舊」類型。 但是在OpenCV文檔中,它特別暗示新的CascadeClassifier對象可以打開「舊」和「新」級聯分類器。

這裏有一個鏈接:http://opencv.itseez.com/modules/objdetect/doc/cascade_classification.html#cascadeclassifier-load

我即使使用預編譯的二進制OpenCV2.2嘗試,它做工精良與XML。然後我嘗試編譯2.2示例源代碼,並再次無法加載xml。

我知道我可以嘗試使用舊對象CvHaarClassifierCascade,但我更喜歡使用最新版本的OpenCV及其對象。

有沒有人有線索我做錯了什麼?

回答

5

給出的xml文件

String face = "c:/data/xml/haarcascade_frontalface_alt.xml"; 

它應該工作的完整路徑!

2

我通過使用記事本++得到了這個工作。我將所有相關的xml文件轉換爲ANSI,並刪除了第一行<?xml version="1.0"?>,然後手動重寫。

2

如果您使用的是Windows,請檢查路徑。關注點是

  1. 轉義序列在路徑中。
  2. 正向或反向斜槓取決於操作系統。

它應該像C:\\Ceemple\\data\\haarcascades\\haarcascade_frontalface_alt.xml。 (順便說一下,我使用的是Ceemple IDE)