예제 #1
0
cv::Mat KinectOpenNI::retrievePointCloudAsImage(const XnDepthPixel *depth)
{
      cv::Mat out(480,640,CV_32FC3,cv::Scalar::all(0));
   /*   cv::Mat img(480,640,CV_32FC1,cv::Scalar::all(0));
      cv::Mat imgx(480,640,CV_32FC1,cv::Scalar::all(0));
      cv::Mat imgy(480,640,CV_32FC1,cv::Scalar::all(0));*/

      XnPoint3D *cloud = retrievePointCloudMap(depth);
      memcpy(out.data,cloud,sizeof(float)*480*640);
    //  out*=0.001f;
    //  out = out*0.001f;
    /*  for(int i=0;i<480*640;i++)
      {
            img.at<float>(i/640,i%640) = cloud[i].Z*0.001f;
            imgx.at<float>(i/640,i%640) = cloud[i].X*0.001f;
            imgy.at<float>(i/640,i%640) = cloud[i].Y*0.001f;
      }*/
/*
      std::vector<cv::Mat> planes;
      planes.push_back(img);
      planes.push_back(imgx);
      planes.push_back(imgy);
      cv::merge(planes,out);*/
      return out;
}
예제 #2
0
IplImage* CvCapture_OpenNI::retrieveFrame( int outputType )
{
    IplImage* image = 0;
    CV_Assert( outputType < outputMapsTypesCount && outputType >= 0);

    if( outputType == CV_CAP_OPENNI_DEPTH_MAP )
    {
        image = retrieveDepthMap();
    }
    else if( outputType == CV_CAP_OPENNI_POINT_CLOUD_MAP )
    {
        image = retrievePointCloudMap();
    }
    else if( outputType == CV_CAP_OPENNI_DISPARITY_MAP )
    {
        image = retrieveDisparityMap();
    }
    else if( outputType == CV_CAP_OPENNI_DISPARITY_MAP_32F )
    {
        image = retrieveDisparityMap_32F();
    }
    else if( outputType == CV_CAP_OPENNI_VALID_DEPTH_MASK )
    {
        image = retrieveValidDepthMask();
    }
    else if( outputType == CV_CAP_OPENNI_BGR_IMAGE )
    {
        image = retrieveBGRImage();
    }
    else if( outputType == CV_CAP_OPENNI_GRAY_IMAGE )
    {
        image = retrieveGrayImage();
    }

    return image;
}