PXCGesture::GeoNode.positionImage problem

PXCGesture::GeoNode.positionImage problem


I'm developing hand tracking base application. And I have a question about PXCGesture::GeoNode structure.

In the document(sdkmanual-gesture.pdf), PXCGesture::GeoNode.positionImage is

The node position in image space coordinates, in (x,y,d), where (x,
y) are coordinates in the depth image, and d is the distance to the
camera in meters.

But, positionImage has not d but z. And z is always 0. (I tested this on C++ and C#.)

How can I get depth from positionImage? or depth is always 0 at all and should get it from positionWorld?

Here is some of my code changed only OnNewFrame function from the gesture_viewer_simple.cs sample.

public override bool OnNewFrame() {
    PXCMGesture gesture = QueryGesture();
    PXCMGesture.GeoNode ndata;
    pxcmStatus sts = gesture.QueryNodeData(0, PXCMGesture.GeoNode.Label.LABEL_BODY_HAND_PRIMARY, out ndata);
    if (sts >= pxcmStatus.PXCM_STATUS_NO_ERROR)
        Console.WriteLine("node HAND_MIDDLE ({0},{1},{2})", ndata.positionImage.x, ndata.positionImage.y, ndata.positionImage.z);
    return (++nframes < 50000);

Thank you.

7 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

I have forwarded your question to our development team and we will get back to you once we have an answer. Thanks.

Thank you for the reply.
I'm waiting for your next reply.
Depth value from positionImage may be useful for 2D application, I think.


Hi Jianchao / Mikhail ,

Am working on gesture Recognition, trying to bypass the camera and identify the gesture from a single image.
Am giving input ,a depth image(Format - bitmap) and converted that into PXC Image.

1. Will the depth details are available in the converted PXC Image.
2. I want to Process this single image and get the blob image and data out of it using Processimageasync. whether it is possible?

now iam facing one problem in processimageasync,it is throwing exception like unhandled exception in gesture_new.exe:0x00000005:Access vioalation reading location 0x00000000
iam getting pitches and planes values as 0..can u plz suggest what i need to do

Thanks in Advance


odakoh wrote:


But, positionImage has not d but z. And z is always 0. (I tested this on C++ and C#.)

How can I get depth from positionImage? or depth is always 0 at all and should get it from positionWorld?


Hi all,

I can confirm that the "z" field (or "d" field according to the documentation) of the positionImage struct is always ZERO regardless of the situation and detection. While in contrast, the "Y" field from the counterpart, positionWorld struct (note that not Z) seems usable and updated accordingly. Thus, in order to get things right, one might need to utilize the data from both structs to get the complete 3D position here, namely the x and y from positionImage plus the y from the positionWorld, although their reference points are somewhat different.

This buggy behavior is particular obvious when one displays the xyz coordinates of both positionImage and positionWorld clearly during runtime. Please refer to the attached screenshot for more details: coordinates within the green block are the xyz of positionImage, while the ones in blue block  are those of positionWorld, note that Z field of positionWorld (which is Y in the SDK context) is updating, while the Zs in positionImage are always idle....

If the documentation describes the expected behavior of positionImage correctly, then this must be a bug that is still existing in the Gold Release SDK. Hope that the team can take a look at this, thanks!

Setup: PC SDK Gold, Windows 8 Pro 64-bit, VS 2010, Application derived from UtilPipeline



Downloadimage/png geonodebug2.png6.41 KB

Any update on this?  Just installed the latest SDK and still only getting ZERO for positionImage.z.  Btw, openness is also returning ZERO all the time, and confidence always 100.



Actually positionImage can be deduced from positionWorld and represents the position projection in the 2D plane. If you need the distance of the object wrt the camera you need to use positionWorld.y. See the documentation.



Leave a Comment

Please sign in to add a comment. Not a member? Join today