Example #1
0
ImageSourceRef UserTracker::getUserMask( XnUserID userId /* = 0 */, bool fillWithUserId /* = false */ )
{
	mObj->mUserBuffers.derefActiveBuffer(); // finished with current active buffer
	uint8_t *destPixels = mObj->mUserBuffers.getNewBuffer();  // request a new buffer

	xn::SceneMetaData sceneMD;
    XnStatus rc = mObj->mUserGenerator.GetUserPixels( userId, sceneMD);
	checkRc( rc, "UserGenerator GetUserPixels" );
	if ( rc == XN_STATUS_OK )
	{
		const uint16_t *userPixels = reinterpret_cast< const uint16_t * >( sceneMD.Data() );

		if ( fillWithUserId )
		{
			if ( userId == 0 )
			{
				// mask for all users
				for ( size_t i = 0 ; i < mObj->mDepthWidth * mObj->mDepthHeight; i++ )
				{
					destPixels[i] = userPixels[i] & 255;
				}
			}
			else
			{
				// mask for specified user id
				for ( size_t i = 0 ; i < mObj->mDepthWidth * mObj->mDepthHeight; i++ )
				{
					if ( userPixels[i] == userId )
						destPixels[i] = userPixels[i] & 255;
					else
						destPixels[i] = 0;
				}
			}
		}
		else
		{
			if ( userId == 0 )
			{
				// mask for all users
				for ( size_t i = 0 ; i < mObj->mDepthWidth * mObj->mDepthHeight; i++ )
				{
					if ( userPixels[i] != 0 )
						destPixels[i] = 255;
					else
						destPixels[i] = 0;
				}
			}
			else
			{
				// mask for specified user id
				for ( size_t i = 0 ; i < mObj->mDepthWidth * mObj->mDepthHeight; i++ )
				{
					if ( userPixels[i] == userId )
						destPixels[i] = 255;
					else
						destPixels[i] = 0;
				}
			}
		}
	}

	// set this new buffer to be the current active buffer
	mObj->mUserBuffers.setActiveBuffer( destPixels );

	uint8_t *activeMask = mObj->mUserBuffers.refActiveBuffer();
	return ImageSourceRef( new ImageSourceOpenNIUserMask( activeMask, mObj->mDepthWidth, mObj->mDepthHeight, mObj ) );
}
Example #2
0
ImageSourceRef ImageSourceFileTinyExr::create( DataSourceRef dataSourceRef, ImageSource::Options options )
{
	return ImageSourceRef( new ImageSourceFileTinyExr( dataSourceRef, options ) );
}
ImageSourceRef ImageSourceFileRadiance::create( DataSourceRef dataSourceRef, ImageSource::Options options )
{
	return ImageSourceRef( new ImageSourceFileRadiance( dataSourceRef, options ) );
}