Distinguishing individual fingers

Distinguishing individual fingers

Kyuhyoung C.'s picture

Hello. 

Now I am using softkinetic's iisu with DS325 camera.  I found iisu can NOT distinguish each fingers.  That is, iisu CAN detect and track five fingers but can NOT tell which one is thumb and which one is index finger and so on (its data structure is just an array of 5 fingers NOT a structure consisting of THUMB, INDEX, MIDDLE, RING and PINKY).  It does NOT distinguish the ["V" pose with index finger and middle finger] between ["V" pose with middle finger and ring finger]. 

I wonder if Intel PC sdk can distinguish the fingers.  What I want is a hand mouse with [index finger open and the rest fingers closed].  I want to the hand mouse becomes active just for the case of [index finger open and the rest closed] NOT the cases of [thumb finger open the rest closed], [middle finger open the rest closed] and so forth.

I am asking this question because I shoud check this capability before buyingIntel's creative cam.    

Sorry for my bad english.

8 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.
Evgeniy L.'s picture

Hello!

You can use somethig like this (С# example):

PXCMGesture.GeoNode[][] mouse_nodes = new PXCMGesture.GeoNode[1][]{ new PXCMGesture.GeoNode[11]};

sts = gesture.QueryNodeData(0, PXCMGesture.GeoNode.Label.LABEL_BODY_HAND_PRIMARY | PXCMGesture.GeoNode.Label.LABEL_HAND_FINGERTIP, out mouse_nodes[0]);

Array mouse_nodes[0] will contain all geonodes of all fingers (main hand). To determine needed finger check nodes in array. See this article for node names http://software.intel.com/sites/landingpage/perceptual_computing/documentation/html/index.html?pxcgesturegeonodelabel.html

Hope it will help.

Kyuhyoung C.'s picture

Evgeniy L.  

Thanks a lot.

Evgeniy L.'s picture

I think this topic need some explanations, because I can misunderstand you.

For example, you show your hand with opened Index and Thumb fingers (left hand is showing first and mark as PRIMARY). In that case array mouse_nodes[0][] will contain data as in attached screenshot. Array elements of closed finger will be marked LABEL_ANY, but you still know which array element corresponds needed fingers.

P.S. In my code above I made a mistake in that:

sts = gesture.QueryNodeData(0, PXCMGesture.GeoNode.Label.LABEL_BODY_HAND_PRIMARY | PXCMGesture.GeoNode.Label.LABEL_HAND_FINGERTIP, out mouse_nodes[0]);

the correct version:

sts = gesture.QueryNodeData(0, PXCMGesture.GeoNode.Label.LABEL_BODY_HAND_PRIMARY, out mouse_nodes[0]);

Attachments: 

AttachmentSize
Download screenshot.png14.61 KB
Robert Oschler's picture

@Evgeniy,

What are mouse_nodes?  I'm familiar with the labels you described above but I've only used them when directly accessing the two GeoNodes arrays (PRIMARY and SECONDARY).  I've never seen mouse_nodes before.  Can you send me a link to a page that describes them and why I would want to use that array instead of using just the GeoNodes arrays?

-- roschler

Evgeniy L.'s picture

Quote:

Robert Oschler wrote:

@Evgeniy,

What are mouse_nodes?  I'm familiar with the labels you described above but I've only used them when directly accessing the two GeoNodes arrays (PRIMARY and SECONDARY).  I've never seen mouse_nodes before.  Can you send me a link to a page that describes them and why I would want to use that array instead of using just the GeoNodes arrays?

-- roschler

Hi Robert!

It is only name of array in my code. See initialization in my first answer. Just sample.

Robert Oschler's picture

@Evgeniy,

Thank you for the clarification.

-- roschler

Free S.'s picture

Thank s a lot.

Login to leave a comment.