0

我正在尝试检测场景中的轮廓并向每个检测到的对象添加对撞机,我使用精明的边缘检测器来获取检测到的对象的坐标。

这是我的输出图像

我需要在每条黑线上添加一个对撞机,以防止我的游戏对象进出该区域,但我不知道该怎么做。findContours 函数返回检测到的轮廓列表,每个轮廓都存储为点向量,但我如何使用它来生成对撞机?

谢谢您的帮助。

更新

这是我的源代码(用于更新方法)

 void Update ()
    {
        if (initDone && webCamTexture.isPlaying && webCamTexture.didUpdateThisFrame) {

            //convert webcamtexture to mat
            Utils.webCamTextureToMat (webCamTexture, rgbaMat, colors);
            //convert to grayscale
            Imgproc.cvtColor (rgbaMat, grayMat, Imgproc.COLOR_RGBA2GRAY);

            //Blurring
            Imgproc.GaussianBlur(rgbaMat,blurMat,new Size(7,7),0);
            Imgproc.Canny(blurMat, cannyMat, 50,100);
            Mat inverted = ~cannyMat;
            //convert back to webcam texture
            Utils.matToTexture2D(inverted, texture, colors);

            Mat hierarchy = new Mat();
            List<MatOfPoint> contours = new List<MatOfPoint>();
            Imgproc.findContours(inverted, contours, hierarchy, Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE);


        }
    }
4

1 回答 1

0

使用PolygonCollider2d

您可以在运行时使用该函数编辑对撞机SetPath,您将向该函数传递一个 2d 点列表(您已经使用该findContours函数计算了该点)。

如果你想让你的对撞机有洞,你可以在多边形中有几条路径。

于 2018-04-04T14:46:02.727 回答