2011-04-12 123 views
0

我試圖在android中使用opencv進行人臉檢測,但無法加載對象檢測xml文件。無法加載opencv中的haarcascadeshaarcascade.xml

的代碼如下,

.....

static CvHaarClassifierCascade* cascade = 0; 
    CvMemStorage* storage = 0; 
    LOGI("before haarcascade"); 

if (!cascade) { 
    const char* file = "/Users/Downloads/OpenCV- 

2.2.0/data/haarcascadeshaarcascade_frontalface_alt.xml"; 
    cascade = (CvHaarClassifierCascade *)cvLoad(file, 0, 0, 0); 
    storage = cvCreateMemStorage(0); 
    } 

if(cascade) 
     LOGI("xml loaded"); 
    else 
      LOGI("unable to load the xml"); 

......

在logcat的它表示無法加載的XML。

如何加載xml?

請別人幫我一把。

感謝, 斯里尼瓦桑

+0

你不錯過''文件中的「C:」嗎? – Jacob 2011-04-12 13:25:09

+0

沒有..實際上我在mac os工作... – srinivasan 2011-04-12 13:32:45

回答

2

蠢問題...但該文件確實存在,不是嗎?

如果該代碼在您的android設備上運行,但該文件存在於主機(Mac OS)工作站上,那麼您運氣不好!

+0

是的我試着把xml放在包裏。讓我們看看我會嘗試通過放置在我的設備中,並檢查... – srinivasan 2011-04-12 14:12:11

0

嘗試加載級聯之前把這個:

///////////////////////////////////////////////////////////////////////// 
///OpenCV Bug Work-around//////////////////////////////////////////////// 
IplImage* dummyImage = cvCreateImage(cvSize(1, 1), IPL_DEPTH_8U, 1);///// 
cvErode(dummyImage, dummyImage);///////////////////////////////////////// 
cvReleaseImage(&dummyImage);///////////////////////////////////////////// 
///OpenCV Bug Work-around//////////////////////////////////////////////// 
///////////////////////////////////////////////////////////////////////// 
+0

是的我知道它看起來很奇怪,但它是一個在opencv中的已知錯誤,你正在經歷什麼。這是解決方法。它在調用cvload之前調用來自上一個庫的函數。只需在cvLoad(.. cascade ...)之前添加此代碼塊即可。 – rossb83 2011-04-13 18:35:08

0

沒有你需要有一個目錄分離haarcades和haarcascade_frontalface之間的斜線....

const char* file = "/Users/Downloads/OpenCV- 

2.2.0/data/haarcascades/haarcascade_frontalface_alt.xml"; 
1

應該是路徑問題。請編寫完整路徑或將xml文件與代碼一起保存,以便直接進行拾取。