by Anonymous » 02 Feb 2025, 16:25
Ich habe eine Maskenstruktur und eine Tiefenkarte, die Maskenstruktur hat eine Resultion von 316 * 360 und die Tiefenkarte hat eine Resultion von 1280 * 720, ich versuche, auf jedes Pixel in der Maske zu überprüfen, wenn es sich in der Tiefenkarte befindet , aber ich bekomme viele Punkte und sie sind nicht mit der Maske verwandt, wie viele Punkte aus der Tiefenkarte und nicht mit der Maske
, die die Maske
Code: Select all
private List ExtractPointsFromMaskWithZEDMat(Vector2 maskSize, Texture2D maskTexture, ZEDMat depthMat, CalibrationParameters paras, Pose pose)
{
List points = new List();
Pose p = new Pose();
zedManager.zedCamera.GetPosition(ref p, REFERENCE_FRAME.WORLD);
float fx = paras.leftCam.fx;
float fy = paras.leftCam.fy;
float cx = paras.leftCam.cx;
float cy = paras.leftCam.cy;
int depthWidth = depthMat.GetWidth(); // 1280
int depthHeight = depthMat.GetHeight(); // 720
float scaleX = maskSize.x / depthWidth;
float scaleY = maskSize.y / depthHeight;
int stride = 2;
for (int maskY = 0; maskY < maskSize.y; maskY += stride)
{
for (int maskX = 0; maskX < maskSize.x; maskX += stride)
{
Color maskColor = maskTexture.GetPixel(maskX, (int)maskSize.y - 1 - maskY);
if (maskColor.a < 0.5f) continue;
int depthX = Mathf.FloorToInt(maskX / scaleX);
int depthY = Mathf.FloorToInt(maskY / scaleY);
if (depthX >= depthWidth || depthY >= depthHeight) continue;
float depth;
depthMat.GetValue(depthX, depthY, out depth, ZEDMat.MEM.MEM_CPU);
if (depth
Ich habe eine Maskenstruktur und eine Tiefenkarte, die Maskenstruktur hat eine Resultion von 316 * 360 und die Tiefenkarte hat eine Resultion von 1280 * 720, ich versuche, auf jedes Pixel in der Maske zu überprüfen, wenn es sich in der Tiefenkarte befindet , aber ich bekomme viele Punkte und sie sind nicht mit der Maske verwandt, wie viele Punkte aus der Tiefenkarte und nicht mit der Maske
, die die Maske
[code]private List ExtractPointsFromMaskWithZEDMat(Vector2 maskSize, Texture2D maskTexture, ZEDMat depthMat, CalibrationParameters paras, Pose pose)
{
List points = new List();
Pose p = new Pose();
zedManager.zedCamera.GetPosition(ref p, REFERENCE_FRAME.WORLD);
float fx = paras.leftCam.fx;
float fy = paras.leftCam.fy;
float cx = paras.leftCam.cx;
float cy = paras.leftCam.cy;
int depthWidth = depthMat.GetWidth(); // 1280
int depthHeight = depthMat.GetHeight(); // 720
float scaleX = maskSize.x / depthWidth;
float scaleY = maskSize.y / depthHeight;
int stride = 2;
for (int maskY = 0; maskY < maskSize.y; maskY += stride)
{
for (int maskX = 0; maskX < maskSize.x; maskX += stride)
{
Color maskColor = maskTexture.GetPixel(maskX, (int)maskSize.y - 1 - maskY);
if (maskColor.a < 0.5f) continue;
int depthX = Mathf.FloorToInt(maskX / scaleX);
int depthY = Mathf.FloorToInt(maskY / scaleY);
if (depthX >= depthWidth || depthY >= depthHeight) continue;
float depth;
depthMat.GetValue(depthX, depthY, out depth, ZEDMat.MEM.MEM_CPU);
if (depth