- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
Hello Guys, i am writing here for the 3rd time, i hope that someone will finally answer my question... The following java code is working, the hands are recognized BUT the gestures arent!! did i forget anything in the code? for any helpful hints i would be thankful!
public class handgecogni  {
	
	public static void main(String s[]) {
	System.out.println("Starting hand tracker.");
	
	PXCMSenseManager senseManager =PXCMSenseManager.CreateInstance();
	senseManager.EnableStream(PXCMCapture.StreamType.STREAM_TYPE_COLOR,640,480,30);
	senseManager.EnableHand(null);
	PXCMHandModule handModule = senseManager.QueryHand();
	senseManager.Init();
	PXCMHandData handData = handModule.CreateOutput();
	PXCMHandConfiguration handConfig = handModule.CreateActiveConfiguration();
	
	handConfig.DisableAllGestures();
	// i want to make only thumbs up recognized
	handConfig.EnableGesture("thumbs_up");
	handConfig.EnableAllAlerts();	
	handConfig.ApplyChanges();
	
	PXCMCaptureManager captureMgr = senseManager.QueryCaptureManager();
	captureMgr.FilterByDeviceInfo("RealSense",null, 0);
	pxcmStatus sts = senseManager.EnableHand(null);
	sts = senseManager.Init();				 
	handConfig.Update();
	
		if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR) >= 0) {
			senseManager.Init();
							
			for (int nframes = 0; nframes < 3000; nframes++) {
		//	System.out.println("Frame # " + );
			sts = senseManager.AcquireFrame(true);
			if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR) < 0)
			break;
	
				while (senseManager.AcquireFrame(true).isSuccessful()) {
					
				// Retrieve current hand tracking results
				handData = handModule.CreateOutput();
				handData.Update();
				PXCMHandData.GestureData gestureData = new PXCMHandData.GestureData();
				PXCMHandData.IHand hand = new PXCMHandData.IHand();
				sts = handData.QueryHandData(PXCMHandData.AccessOrderType.ACCESS_ORDER_NEAR_TO_FAR,0, hand);
				
				
				if (sts.compareTo(pxcmStatus.PXCM_STATUS_NO_ERROR) >= 0) {
					
					
					PXCMPointF32 image = hand.QueryMassCenterImage();
					PXCMPoint3DF32 world = hand.QueryMassCenterWorld();
					boolean result = handData.IsGestureFired("thumbs_up", gestureData);
					System.out.print("  Is Thumbs up : (" + result+ ")\n");
					System.out.print("   Image Position: (" + image.x + ","+ image.y + ")");
					System.out.println("   World Position: (" + world.x + ","+ world.y + "," + world.z + ")");
					
				}
				int ngestures = handData.QueryNumberOfHands();
				System.out.println("# of hands is "+ ngestures);
		
				senseManager.ReleaseFrame();
				}	
			}
		senseManager.close();
		
		}
	}
	
}
Link Copied
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
Hello Fadi,
Have you tried "thumb_up" instead of "thumbs_up"? There might be a typo here.
-Bryan
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
Hello Bryan, thanx for your comment, i changed it but no difference. in consloe still showing: " Is Thumbs up : (false)" also when place my hand in front of the camera "thumb up"
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
Just to make sure, did you change it in both places?
handConfig.EnableGesture("thumbs_up");
.
.
.
boolean result = handData.IsGestureFired("thumbs_up", gestureData);
-Bryan
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
oops! i changed both now, it seems to work!! thaanks a alot , but its working a weird way, it shows one time true and 10 times false.
its not showing "true" one after the other.
any way i have made this boolean, to check if the gesture recognition is working.
the main purpose of my program is to enable "thumb_up" and "thumb_down" and "swipe"
i will try to make some changes sothat it shows those up written gestures in the console.
thank you again :)
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
Glad to hear it's moving forward! You may want to refer to para. 4.5.6 on page 1220 in sdkmanuals.pdf (C:\Program Files (x86)\Intel\RSSDK\doc\PDF) for the naming conventions used for the other gestures (e.g., "swipe_left", etc.)
-Bryan
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
now i got it, one last question, i wanted to show in the console the name of the gesture instead of true and false,
i used this System.out.print("Gesture is \n" +gestureData.name);
it didnt work and showed only "Gesture is" repeatedly
- Mark as New
 - Bookmark
 - Subscribe
 - Mute
 - Subscribe to RSS Feed
 - Permalink
 - Report Inappropriate Content
 
Dear Bryan, i found it! i wrote this code and thumb up and down are working now,
PXCMHandData.GestureData gestureData = new PXCMHandData.GestureData();
				if (handData.IsGestureFired("thumb_up", gestureData)) {
				System.out.println("thumb up!!");	
				}
				
				else if (handData.IsGestureFired("thumb_down", gestureData)) {
					System.out.println("thumb down!!");	
					}
				else if (handData.IsGestureFired("wave", gestureData)) {
					System.out.println("wave!!");	
					}
for waving im going to use swipe_right and swipe_left because it didnt recognize it
- Subscribe to RSS Feed
 - Mark Topic as New
 - Mark Topic as Read
 - Float this Topic for Current User
 - Bookmark
 - Subscribe
 - Printer Friendly Page