OpenCv:如何在视频流中的某个坐标处设置标记打开cv

时间:2011-11-11 10:46:02

标签: c++ xcode image-processing opencv openni

我正在使用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);

我得到:

enter image description here

因为你可以看到圆圈由于某种原因停留在左上角。任何想法如何改变这个?

1 个答案:

答案 0 :(得分:0)

尝试OpenCV中的显示功能:

line(),circle(),drawPoly()并将它们应用于视频中的每一帧