Hello @olga.kuzminykh
This may concern you because I think you wrote the point cloud tutorial.
I’m trying to do some image processing and after that i found the object position in RGB image. I use OpenCvSharp in Unity. I found the object position in terms of pixel position and they are (x,y).
Once I found the object position I want to get it’s depth value using NuiTrack API.
My implementation is as follows.
if (objectFound == true)
{
if (ax > 20 && ax < 620 && ay > 20 && ay < 460)
{
Cv2.PutText(matRGBA, “Tracking Object”, new Point(50, 50), HersheyFonts.HersheySimplex, 1, new Scalar(0, 255, 0), 1, LineTypes.Link8, false);
for (int q = ay - offset; q < ay + offset; q++)
{
for (int p = ax - offset; p < ax + offset; p++)
{
//change of position of the point (cube) in Z (depth)
newPos = NuitrackManager.DepthSensor.ConvertProjToRealCoords(ax, ay, depthFrame[ay, ax]).ToVector3();
sumPos = sumPos + newPos;
}
}
finalPos = sumPos / ((ax + offset - ax + offset) * (ay + offset - ay + offset));
Debug.Log(" aX: " + ax + " aY: " + ay + " wX: " + finalPos.x + " wY: " + finalPos.y + " wZ: " + finalPos.z + "depth is: "+ depthFrame[ay, ax]);
}
}
I have enabled 640x480 mode for RGB frame. and I believe the same is also applied to Depth frame. I’m using PointCloud template from Unity example section.
The problem is that the extracted depth is not OK. I gives something like 760-800 and then suddenly jumps to 1300mm.
what could be the reason?
Why is it jumping?
Am I missing something?
BR,
Prasanna