1
我使用openni和opencv運行kinect。我已經做了人臉檢測與攝像頭haarcascade但我不能夠與Kinect的做如何用kinect和opencv做臉部檢測?
int main(int argc, char* argv[]){
try
{
... // call OpenCV
VideoCapture capture(CV_CAP_OPENNI);
CvHaarClassifierCascade* cascade=0;
CvMemStorage* storage=0;
CvSeq* face;
storage=cvCreateMemStorage(0);
cascade=(CvHaarClassifierCascade *)cvLoad("haarcascade_profileface.xml",0,0,0);*/
if(cascade){
for(;;)
{
Mat depthMap;
if(!capture.grab())
{
cout << "Can not grab images." << endl;
return -1;
}
else
{
if( capture.retrieve(depthMap,CV_CAP_OPENNI_BGR_IMAGE))
{
/*IplImage* img = new IplImage(depthMap);
face=cvHaarDetectObjects(img,cascade,storage,1.1,3,CV_HAAR_DO_CANNY_PRUNING,cvSize(0,0));
for(int i=0;i<(face?face->total:0);i++)
{
CvRect* r=(CvRect*)cvGetSeqElem(face,i);
CvPoint pt1={r->x,r->y};
CvPoint pt2={r->x+r->width,r->y+r->height};
cvRectangle(img,pt1,pt2,CV_RGB(0,255,0),3,4,0);
//imshow("depth map", depthMap);
}*/
const float scaleFactor = 0.05f;
//Mat show; depthMap.convertTo(show, CV_8UC3, scaleFactor);
imshow("depth map", depthMap);
// }
}
if(waitKey(30) >= 0)
break;
}
}
}
catch(cv::Exception& e)
{
const char* err_msg = e.what();
std::cout << "exception caught: " << err_msg << std::endl;
}
return 0;
}
...有人請幫我出
您需要提供有關您無法完成的確切部分的一點信息。發佈一段代碼並說「不起作用」並不是提出問題的最有效方式。 – misha
嘗試重新表達您的問題。問題究竟在哪裏?你能夠檢索BGR圖像嗎? –