2011-11-11 24 views
0

kinectで作業するには、xcode 4のNITE/OPENNIとopencvで作業しています。誘い込む(真)OpenCv:ビデオストリームの特定の座標にマーカーを設定する方法open cv

に続いて

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)を設定するにはどうすればよいですか?

EDIT

は、私が試した:

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

円が何らかの理由で左上隅にとどまるあなたが見ることができるように。任意のアイデアをどのようにこれを変更するには?

答えて

0

OpenCVの中に表示機能を試してみてください。

ライン()、円()、drawPolyを()して、動画内のすべてのフレームに適用します

+0

(質問でそれを追加したこと、ありませんでした試しました – Ojtwist

+0

なんらかの理由で、あなたのポイントは座標(0,0)を持っています。表示部分はOKですが、問題は検出にあります。 – Sam

+0

私は出力から見ることができるように、いくつかの負の座標(それは1番の行に奇妙です)を表示し、次の行にはゼロが含まれています。私はあなたがゼロ部分を表示すると仮定します – Sam

関連する問題