Hi,I need your help in some ways.
We obtain the three-dimensional coordinates of the object at the corresponding position of some pixels ( i, j ) in the image by :
point_cloud = sl.Mat(res.width, res.height, sl.MAT_TYPE.F32_C4, sl.MEM.CPU)
zed.retrieve_measure(point_cloud, sl.MEASURE.XYZRGBA,sl.MEM.CPU, res)
point = point _ cloud.get _ value ( i, j )
In the process of actual use, the coordinate values at some points are very different from the actual ones. How to ensure the accuracy of the coordinates ?
Hi, that depends on a lot of things. What program are you running ? With what depth mode, what resolution ?
Can you share a SVO ?
I run a self-designed human key point detection program to obtain the two-dimensional coordinates of the key points of the human body on the image.
In the program, the three-dimensional coordinates of the corresponding coordinates of each frame are obtained by running the.svo file.
In the first frame, the actual coordinates and corresponding names are as follows:
nose [ 69.04106903 -172.1862793 397.14389038 nan]
left_eye [ 71.04818726 -172.97695923 376.09933472 nan]
right_eye [ 57.33935547 -178.81330872 388.78918457 nan]
left_ear [ 75.72220612 -169.67974854 378.22134399 nan]
right_ear [ 31.42896652 -176.92559814 394.37255859 nan]
left_shoulder [ 1.00310173e+02 -1.46813843e+02 4.57961731e+02 -3.11628312e+38]
right_shoulder [ 8.38584614 -131.80895996 431.42926025 nan]
left_elbow [nan nan nan nan]
right_elbow [-35.83028793 -99.30161285 641.16693115 nan]
left_wrist [nan nan nan nan]
right [nan nan nan nan]
left_hip [ 3.18663769e+01 7.57530212e+00 1.56229111e+02 -2.04841810e+38]
right_hip [ 9.24051380e+00 7.84723997e+00 1.61837418e+02 -1.90162964e+38]
left_knee [ 3.40660706e+01 4.79557762e+01 1.55527161e+02 -1.99498876e+38]
right_knee [ 1.00962887e+01 4.87570763e+01 1.56217880e+02 -1.95505980e+38]
left_ankle [ 3.13852043e+01 8.15210571e+01 1.48390518e+02 -2.07505520e+38]
right_ankle [ 1.16617241e+01 8.49559555e+01 1.53590088e+02 -1.99504048e+38]
In this way, the difference between the head and the foot is about 2m.Finally. How to share the svo file?
Hi,the video is VGA,60 frame rate,the resolution is 672*376
VGA has the lowest accuracy. What if you use 2K ?
What depth mode do you use ?
Hi.First of all, I want to thank you.
I use HD2k last night,The clarity and accuracy have been improved a lot. I do not seem to use the depth mode in the program, using only the following way to obtain point cloud data:zed.retrieve_measure(point_cloud, sl.MEASURE.XYZRGBA,sl.MEM.CPU, res)
Then the three-dimensional coordinates of the corresponding points are obtained in this way:
point = point _ cloud.get _ value ( i, j )
The coordinate points obtained by the above method are as follows:
print(nose)
print(left_eye)
print(right_eye)
print(left_ear)
print(right_ear)
print(left_shoulder)
print(right_shoulder)
print(left_elbow)
print(right_elbow)
print(left_wrist)
print(right)
print(left_hip)
print(right_hip)
print(left_knee)
print(right_knee)
print(left_ankle)
print(right_ankle)
point3D*
[-3.58743405e+00 7.78125610e+01 -1.66326477e+02 -2.39527205e+38]
[-8.12261999e-01 8.09536743e+01 -1.69003754e+02 -3.27631437e+38]
[-7.40155935e+00 8.26096649e+01 -1.68529175e+02 -3.24952090e+38]
[ 2.05409813e+00 7.84537582e+01 -1.71800842e+02 -3.14323438e+38]
[-1.55545988e+01 8.01536331e+01 -1.75523285e+02 -3.36910457e+38]
[ 1.01949234e+01 6.00527725e+01 -1.79943832e+02 -2.28830445e+38]
[-2.21184750e+01 5.53683357e+01 -1.65907257e+02 -2.76797248e+38]
[ 2.23223991e+01 3.70311165e+01 -1.80447250e+02 -2.52866074e+38]
[-3.73988342e+01 3.72685242e+01 -1.76790634e+02 -3.12915738e+38]
[ 2.78687229e+01 4.08644028e+01 -1.71164520e+02 -2.30159754e+38]
[-3.85016518e+01 3.56882286e+01 -1.60771561e+02 -2.27485701e+38]
[ 5.61142635e+00 3.55971408e+00 -1.63568817e+02 -2.14151639e+38]
[-1.43370323e+01 3.52086830e+00 -1.61783859e+02 -2.16820520e+38]
[ 7.51220226e+00 -3.14753761e+01 -1.65171677e+02 -2.12832836e+38]
[-1.48474541e+01 -3.19273815e+01 -1.67543625e+02 -2.07495074e+38]
[ 7.85978651 -67.53222656 -172.81404114 nan]
[ -11.04678345 -68.86762238 -166.69734192 nan]
The coordinate system of the original image I use is ( 0,0 ) at the top left, the x direction represents the width of 2208, and the y direction is the height of 1242.
I want to ask what the coordinate system in the corresponding program should choose, is this coordinate_system = sl.COORDINATE_SYSTEM.RIGHT_HANDED_Y_UP ?
What is the meaning of the corresponding [ -3.58743405e + 007.78125610e + 01-1.66326477e + 02-2.39527205e + 38 ]?Is it [x,y,z,rgb]?

The coordinate system of the image I obtained is similar to this.
Hi, you should check out our documentation and tutorials to understand these concepts better. For example, the depth_mode is not something optional. If you did not set it up, you have the default one, but to improve the accuracy you should try to tune it. That would be the tutorial 3 : https://github.com/stereolabs/zed-sdk/tree/master/tutorials/tutorial%203%20-%20depth%20sensing