Erzeugen Sie die Punktwolke aus einer Maske- und TiefenkarteC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Erzeugen Sie die Punktwolke aus einer Maske- und Tiefenkarte

Post by Anonymous »

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post