本文整理汇总了C++中xn::GestureGenerator::AddGesture方法的典型用法代码示例。如果您正苦于以下问题:C++ GestureGenerator::AddGesture方法的具体用法?C++ GestureGenerator::AddGesture怎么用?C++ GestureGenerator::AddGesture使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类xn::GestureGenerator
的用法示例。
在下文中一共展示了GestureGenerator::AddGesture方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: lost_hand
void XN_CALLBACK_TYPE lost_hand(xn::HandsGenerator &generator, XnUserID nId, XnFloat fTime, void *pCookie) {
printf("Lost Hand %d \n", nId);
gestureGenerator.AddGesture(GESTURE_TO_USE, NULL);
if (kitchenMode) return;
lo_send(addr, "/lost_user", NULL);
}
示例2: Hand_Destroy
void XN_CALLBACK_TYPE Hand_Destroy(
xn::HandsGenerator& generator,
XnUserID nId,
XnFloat fTime,
void* pCookie)
{
gesture_generator.AddGesture(GESTURE, NULL);
hand_recognized = false;
}
示例3: lost_hand
void XN_CALLBACK_TYPE lost_hand(xn::HandsGenerator &generator, XnUserID nId, XnFloat fTime, void *pCookie) {
printf("Lost Hand %d \n", nId);
gestureGenerator.AddGesture(GESTURE_TO_USE, NULL);
if (kitchenMode) return;
osc::OutboundPacketStream p( osc_buffer, OUTPUT_BUFFER_SIZE );
p << osc::BeginBundleImmediate;
p << osc::BeginMessage("/lost_user");
p << (int)nId;
p << osc::EndMessage;
p << osc::EndBundle;
transmitSocket->Send(p.Data(), p.Size());
}
示例4: handDestroy
void XN_CALLBACK_TYPE handDestroy(HandsGenerator &generator, XnUserID user, XnFloat fTime, void *pCookie){
printf("hand destroy \n");
if (hand1ID == user) {
hand1ID = -1;
while (hand1.size() > 0) {
hand1.pop();
}
} else if (hand2ID == user) {
hand2ID = -1;
while (hand2.size() > 0) {
hand2.pop();
}
}
oldZoom = 1;
oldAngle = 0;
g_GestureGenerator.AddGesture(GESTURE_TO_USE, NULL);
}
示例5: lost_hand
void XN_CALLBACK_TYPE lost_hand(xn::HandsGenerator &generator, XnUserID nId, XnFloat fTime, void *pCookie) {
printf("{\"lost_hand\":{\"userid\":%d}, \"elapsed\":%.3f}}\n", nId, clockAsFloat(last));
gestureGenerator.AddGesture(GESTURE_TO_USE, NULL);
}
示例6: main
int main(int argc, char* argv[]) {
glue.Init(argc, argv, 640, 240, "TrackHand");
xn::Context context;
XnStatus status = context.Init();
bmg::OnError(status, []{
std::cout << "Couldn't init OpenNi!" << std::endl;
exit(1);
});
xn::ImageGenerator image_generator;
status = image_generator.Create(context);
bmg::OnError(status, []{
std::cout << "Couldn't create image generator!" << std::endl;
});
status = depth_generator.Create(context);
bmg::OnError(status, []{
std::cout << "Couldn't create depth generator!" << std::endl;
});
xn::ImageMetaData image_metadata;
xn::DepthMetaData depth_metadata;
// Create gesture & hands generators
status = gesture_generator.Create(context);
bmg::OnError(status, []{
std::cout << "Couldn't create gesture generator!" << std::endl;
});
status = hands_generator.Create(context);
bmg::OnError(status, []{
std::cout << "Couldn't create hands generator!" << std::endl;
});
// Register to callbacks
XnCallbackHandle h1, h2;
gesture_generator
.RegisterGestureCallbacks(Gesture_Recognized, Gesture_Process, NULL, h1);
hands_generator
.RegisterHandCallbacks(Hand_Create, Hand_Update, Hand_Destroy, NULL, h2);
status = context.StartGeneratingAll();
bmg::OnError(status, []{
std::cout << "Couldn't generate all data!" << std::endl;
});
status = gesture_generator.AddGesture(GESTURE, NULL);
bmg::OnError(status, []{
std::cout << "Couldn't add gesture!" << std::endl;
});
glue.BindDisplayFunc([&]{
glue.BeginDraw();
// here goes code for app main loop
XnStatus status = context.WaitAndUpdateAll();
bmg::OnError(status, []{
std::cout << "Couldn't update and wait for new data!" << std::endl;
});
image_generator.GetMetaData(image_metadata);
unsigned imageX = image_metadata.XRes();
unsigned imageY = image_metadata.YRes();
glue.DrawOnTexture(
(void*)image_metadata.RGB24Data(),
imageX, imageY,
imageX, imageY,
320, 0, 640, 240);
depth_generator.GetMetaData(depth_metadata);
unsigned depthX = depth_metadata.XRes();
unsigned depthY = depth_metadata.YRes();
XnRGB24Pixel* transformed_depth_map = new XnRGB24Pixel[depthX * depthY];
bmg::CalculateDepth(
depth_generator.GetDepthMap(), depthX, depthY, MAX_DEPTH, transformed_depth_map);
glue.DrawOnTexture(
(void*)transformed_depth_map,
depthX, depthY,
depthX, depthY,
0, 0,
320, 240);
delete [] transformed_depth_map;
if (hand_recognized) {
// Draw point over tracked hand
glue.DrawPointOverRegion(static_cast<unsigned>(projective_point.X), static_cast<unsigned>(projective_point.Y), 0, 0);
glue.DrawPointOverRegion(static_cast<unsigned>(projective_point.X), static_cast<unsigned>(projective_point.Y), 320, 0);
}
glue.EndDraw();
});
glue.BindKeyboardFunc([](unsigned char key, int x, int y){
switch(key) {
case 27:
exit(1);
}
});
//.........这里部分代码省略.........
示例7: GestureGenerator_AddGesture_wrapped
void GestureGenerator_AddGesture_wrapped(xn::GestureGenerator& self, std::string gesture) {
checkValid(self);
check( self.AddGesture(gesture.c_str(), NULL) ); //FIXME: add default params here
}
示例8: main
int main(int argc, char* argv[])
{
// Start
VideoCapture capture (CV_CAP_OPENNI);
if(!capture.isOpened())
{
int error = -1;
return 1;
}
namedWindow( "Color Image", 1 );
//namedWindow( "Depth Map", 1);
Mat view;
bool blink = false;
// NITE + openni
XnStatus rc = XN_STATUS_OK;
Context context;
rc = context.Init();
rc = g_GestureGenerator.Create(context);
rc = g_HandsGenerator.Create(context);
XnCallbackHandle hcb1,hcb2;
g_GestureGenerator.RegisterGestureCallbacks(Gesture_Recognized, Gesture_Process, NULL, hcb1);
g_HandsGenerator.RegisterHandCallbacks(handCreate, handUpdate, handDestroy, NULL, hcb2);
rc = context.StartGeneratingAll();
rc = g_GestureGenerator.AddGesture(GESTURE_TO_USE, NULL);
double d = 1.0;
double angle = 0.0;
double angleZ = 0.0;
Mat result;
Mat orig = imread("crocus.jpg");
result.create(750, 750, CV_8UC3);
double centerX = orig.cols/2;
double centerY = orig.rows/2;
warpPerspective(orig, orig, getScaleMatrix(1.0), orig.size(), INTER_CUBIC, BORDER_TRANSPARENT);
while( capture.isOpened() )
{
rc = context.WaitAndUpdateAll();
d = getZoom();
angle = getAngle();
angleZ = getAngle3D();
if (abs(d - oldZoom) > 0.009) {
//printf("angle = %f \n",angle);
oldAngle += angle;
//create the transformation to be passed to warp
Mat openCVTransform = getRotationMatrix2D(Point2f(centerX, centerY), oldAngle, d);
//warp image to apply transformation
result.setTo(Scalar(0));
warpAffine(orig, result, openCVTransform, result.size(), INTER_CUBIC, BORDER_TRANSPARENT);
oldZoom = d;
}
imshow("Result", result);
Mat bgrImage;
capture.grab();
capture.retrieve( bgrImage, CV_CAP_OPENNI_BGR_IMAGE );
if (hand1ID != -1) {
circle(bgrImage,Point(hand1.back().X + bgrImage.rows/2, bgrImage.cols/2 - hand1.back().Y),2,CV_RGB(0,255,0),3);
}
if (hand2ID != -1) {
circle(bgrImage,Point(hand2.back().X + bgrImage.rows/2, bgrImage.cols/2 - hand2.back().Y),2,CV_RGB(0,255,0),3);
}
flip(bgrImage,bgrImage,1);
imshow("Color Image", bgrImage);
result.create(750, 750, CV_8UC3);
if(waitKey(33) == 'q')
{
break;
}
}
context.Shutdown();
return 0;
}