示例#1
0
void GeneratePointCloud(DepthGenerator& rDepthGen, const XnDepthPixel* pDepth, VISION_DATA &pData)
{
    DepthMetaData mDepthMD;
    rDepthGen.GetMetaData(mDepthMD);
    pData.timeStamp = mDepthMD.Timestamp();
    unsigned int uPointNum = mDepthMD.FullXRes() * mDepthMD.FullYRes();

    XnPoint3D* pDepthPointSet = new XnPoint3D[uPointNum];
    unsigned int i, j, idxshift, idx;
    for( j = 0; j < mDepthMD.FullYRes(); ++j)
    {
        idxshift = j * mDepthMD.FullXRes();

        for(i = 0; i < mDepthMD.FullXRes(); ++i)
        {
            idx = idxshift + i;
            pDepthPointSet[idx].X = i;
            pDepthPointSet[idx].Y = j;
            pDepthPointSet[idx].Z = pDepth[idx];
        }
    }

    XnPoint3D* p3DPointSet = new XnPoint3D[uPointNum];

    rDepthGen.ConvertProjectiveToRealWorld(uPointNum, pDepthPointSet, p3DPointSet);

    memcpy(pData.pointCloud, p3DPointSet, uPointNum*3*sizeof(float));

    delete[] pDepthPointSet;

    delete[] p3DPointSet;
}
示例#2
0
int OpencvModule::DrawDepth(DepthMetaData& g_depthMD){

    if (!cvGetWindowHandle("Caremedia Kinect Viewer"))  // if(window has been closed)
    {
        if (windowopened) {windowopened=false; return 0; }
        else windowopened = true;
    }

    int key=0;
    //for opencv Mat, accessing buffer
    Mat depth16(480,640,CV_16UC1,(unsigned short*)g_depthMD.WritableData());
    depth16.convertTo(depth8,CV_8U,-255/4096.0,255);
    Pseudocolor->pseudocolor(depth8,rgbdepth);

    //CvFont font;
    //cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 1.0, 1.0, 0, 1, CV_AA);

    float aux=((float)g_depthMD.Timestamp())/1E6;
    QVariant time_double(aux);

    QTime t = videostarttime.addSecs((int)aux).addMSecs((int)(aux - (int)aux ) * 1000);

    float percent = (float)100*(float)g_depthMD.FrameID() / (float)NumFrames;

    QString a;

    putText(rgbdepth,"Time:"+t.toString().toStdString(), cvPoint(460,30),5,1,cvScalar(255, 255, 255, 0),1,1);

    putText(rgbdepth, a.setNum(percent,'f',2).append("%").toStdString(), cvPoint(5,30),6,0.6,cvScalar(255, 255, 255, 0),1,1);

    imshow("Caremedia Kinect Viewer",rgbdepth);

    key = waitKey(5);

}