Esempio n. 1
0
XN_C_API XnDepthMetaData* xnAllocateDepthMetaData()
{
	XnDepthMetaData* pResult = (XnDepthMetaData*)xnOSCalloc(1, sizeof(XnDepthMetaData));
	if (pResult == NULL)
	{
		return (NULL);
	}

	pResult->pMap = xnAllocateMapMetaData();
	if (pResult->pMap == NULL)
	{
		xnFreeDepthMetaData(pResult);
		return (NULL);
	}

	return (pResult);
}
Esempio n. 2
0
int main()
{
    XnStatus nRetVal = XN_STATUS_OK;
    XnContext* pContext;
    XnNodeHandle hScriptNode;
    XnEnumerationErrors* pErrors;
    XnNodeHandle hDepth;
    XnDepthMetaData* pDepthMD;
    const XnDepthPixel* pDepthMap;
    XnDepthPixel middlePoint;

    nRetVal = xnEnumerationErrorsAllocate(&pErrors);
    CHECK_RC(nRetVal, "Allocate errors object");

    nRetVal = xnInitFromXmlFileEx(SAMPLE_XML_PATH, &pContext, pErrors, &hScriptNode);
    if (nRetVal == XN_STATUS_NO_NODE_PRESENT)
    {
        XnChar strError[1024];
        xnEnumerationErrorsToString(pErrors, strError, 1024);
        printf("%s\n", strError);
        xnEnumerationErrorsFree(pErrors);
        return (nRetVal);
    }
    else if (nRetVal != XN_STATUS_OK)
    {
        printf("Open failed: %s\n", xnGetStatusString(nRetVal));
        xnEnumerationErrorsFree(pErrors);
        return (nRetVal);
    }

    xnEnumerationErrorsFree(pErrors);

    nRetVal = xnFindExistingRefNodeByType(pContext, XN_NODE_TYPE_DEPTH, &hDepth);
    CHECK_RC(nRetVal, "Find depth generator");

    pDepthMD = xnAllocateDepthMetaData();

    while (!xnOSWasKeyboardHit())
    {
        nRetVal = xnWaitOneUpdateAll(pContext, hDepth);
        if (nRetVal != XN_STATUS_OK)
        {
            printf("UpdateData failed: %s\n", xnGetStatusString(nRetVal));
            continue;
        }

        xnGetDepthMetaData(hDepth, pDepthMD);
        pDepthMap = pDepthMD->pData;
        middlePoint = pDepthMap[pDepthMD->pMap->Res.X * pDepthMD->pMap->Res.Y/2 + pDepthMD->pMap->Res.X/2];

        printf("Frame %d Middle point is: %u\n", pDepthMD->pMap->pOutput->nFrameID, middlePoint);
    }

    xnFreeDepthMetaData(pDepthMD);

    xnProductionNodeRelease(hDepth);
    xnProductionNodeRelease(hScriptNode);
    xnContextRelease(pContext);

    return 0;
}