我正在使用NITE / OPENNI和xcode 4中的opencv来处理kinect。我能够得到头部的坐标,例如这是通过:
完成的主要是在诡计之外(真实):
IplImage *rgbimg = cvCreateImageHeader(cvSize(640,480), 8, 3);
然后在诡计(真实)
XnSkeletonJointPosition Head;
g_UserGenerator.GetSkeletonCap().GetSkeletonJointPosition( aUsers[i], XN_SKEL_HEAD, Head);
printf("%d: (%f,%f,%f) [%f]\n", aUsers[i], Head.position.X, Head.position.Y, Head.position.Z, Head.fConfidence); }
我也有视频流:
// Take current image
const XnRGB24Pixel* pImage = Xn_image.GetRGB24ImageMap();
//process image data
XnRGB24Pixel* ucpImage = const_cast<XnRGB24Pixel*> (pImage);
cvSetData(rgbimg,ucpImage, 640*3);
cvCvtColor(rgbimg,rgbimg,CV_RGB2BGR);
cvShowImage("RGB",rgbimg);
这一切都在主要的一段时间内完成(真实)。
现在我的问题是如何在视频流中手的坐标位置设置某种标记(例如:*,十字准线,X)?
修改
我试过了:
XnRGB24Pixel* ucpImage = const_cast<XnRGB24Pixel*> (pImage);
cvSetData(rgbimg,ucpImage, 640*3);
cvCvtColor(rgbimg,rgbimg,CV_RGB2BGR);
cvCircle(rgbimg, cvPoint(Head.position.X,Head.position.Y), 20, cvScalar(0,255,0), 1);
cvShowImage("RGB",rgbimg);
我得到:
因为你可以看到圆圈由于某种原因停留在左上角。任何想法如何改变这个?
答案 0 :(得分:0)
尝试OpenCV中的显示功能:
line(),circle(),drawPoly()并将它们应用于视频中的每一帧