我正在使用 xcode 4 中的 NITE/OPENNI 和 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);
我得到:
正如你所看到的,圆圈出于某种原因停留在左上角。任何想法如何改变这个?