2013-07-21 42 views
0

我一直在使用OpenCV C/C++,目前我正在嘗試Android。我正在檢測臉部特徵。我使用OpenCV示例進行人臉檢測,並通過級聯檢測功能。我想問您的是:OpenCV4Android - 在矩形中捕獲圖像(面部檢測)

1)如何在reactangle可變/設備內存捕捉區域:

在OpenCV的它的工作就像是:

cvSetImageROI(img1, cvRect(10, 15, 150, 250)); 

IplImage *img2 = cvCreateImage(cvGetSize(img1), 
          img1->depth, 
          img1->nChannels); 
cvCopy(img1, img2, NULL); 

在Android中的例子,我有數組與發現面的矩形:

Rect[] facesArray = faces.toArray(); 
for (int i = 0; i < facesArray.length; i++) 
Core.rectangle(mRgba, facesArray[i].tl(), facesArray[i].br(), FACE_RECT_COLOR, 3); 

但我不知道如何保存它,因爲我無法在IplImage上工作。你能指導我一些嗎?或者給我一些我可以學習的來源?

2)如果有任何的方式來設置的onClick,在其上發現了攝像機視圖的區域,這樣我就可以點擊choosen臉,它寫某種變量或將其保存在內存中

回答

0

我認爲,你正在尋找mRgba.submat(facesArray[i])

(非常偏頗的個人觀點:?!你還在使用IplImages(又稱C-API)whaa壞習慣搬過來的C++ API)

+0

呀它可以幫助很多,它允許我將矩形區域寫入變量。如果你還可以告訴我顯示它的方式,因爲當我這樣做時:if(facesArray [0]!= null){mChosenFace = mRgba.submat(facesArray [0]);返回mChosenFace; }我的相機視圖凍結。那麼,我有問題,因爲你可以看到,在C++中,我正在使用書,我有參考,現在我不知道寫作和顯示圖像的基本知識。你有什麼資源可以學習嗎? – F1sher

+1

你不能只說:if(facesArray [0]!= null)。如果沒有找到面孔,則不存在facesArray [0],這已經是非法指令了。你必須首先檢查facesArray.length – berak