Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image processing 如何使用kinect和opencv进行人脸检测?_Image Processing_Opencv_Kinect_Openni - Fatal编程技术网

Image processing 如何使用kinect和opencv进行人脸检测?

Image processing 如何使用kinect和opencv进行人脸检测?,image-processing,opencv,kinect,openni,Image Processing,Opencv,Kinect,Openni,我使用openni和opencv运行kinect。我已经用网络摄像头用haarcascade做了面部检测,但我不能用kinect做 int main( int argc, char* argv[] ){ try { ... // call OpenCV VideoCapture capture( CV_CAP_OPENNI ); CvHaarClassifierCascade* cascade=0; CvMemStorage* storage

我使用openni和opencv运行kinect。我已经用网络摄像头用haarcascade做了面部检测,但我不能用kinect做

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;
}
intmain(intargc,char*argv[]){
尝试
{
…//调用OpenCV
视频捕获捕获(CV_CAP_OPENNI);
CvHaarClassifierCascade*级联=0;
CvMemStorage*存储=0;
CvSeq*面;
存储=cvCreateMemStorage(0);
cascade=(CvHaarClassifierCascade*)cvLoad(“haarcascade_profileface.xml”,0,0,0)*/
如果(级联){
对于(;;)
{
垫深图;
如果(!capture.grab())
{
couty};
CvPoint pt2={r->x+r->宽度,r->y+r->高度};
CV矩形(img,pt1,pt2,CV_RGB(0255,0),3,4,0);
//imshow(“深度图”,深度图);
}*/
常量浮点比例因子=0.05f;
//Mat show;深度映射转换到(show,CV_8UC3,scaleFactor);
imshow(“深度图”,深度图);
//          }
}
如果(等待键(30)>=0)
打破
}
}
}
捕获(cv::异常和e)
{
const char*err_msg=e.what();

std::coutcvHaarDetectObjects仅适用于灰度图像或CV_8U类型的矩阵。
因此,您必须在从Kinect检索RGB图像后进行转换

cvtColor( frame, frame_gray, CV_BGR2GRAY );

另外,我看到您将depthMap命名为RGB图像,这可能会让人困惑。

您需要提供一些关于您无法完成的确切部分的信息。发布一段代码并说“它不工作”这不是问问题的最有效方式。试着重新表述你的问题。问题到底出在哪里?你能检索到BGR图像吗?