在矢量列表上添加对撞机
Adding a collider on a list of vectors
我正在尝试检测场景中的轮廓并为每个检测到的对象添加对撞机,我使用 canny 边缘检测器来获取检测到的对象的坐标。
Here is my output image
我需要为每条黑线添加一个对撞机,以防止我的游戏对象进入该区域 in/out,但我不知道该怎么做。
findContours 函数 returns 检测到的轮廓列表,每个轮廓都存储为点向量,但我如何使用它来生成碰撞器?
感谢您的帮助。
更新
这是我的源代码(用于更新方法)
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);
}
}
您可以在运行时使用 SetPath
函数编辑对撞机,您将向其传递一个二维点列表(您已经使用 findContours
函数计算过。
如果你想让你的对撞机有洞,你可以在多边形中有多个路径。
我正在尝试检测场景中的轮廓并为每个检测到的对象添加对撞机,我使用 canny 边缘检测器来获取检测到的对象的坐标。
Here is my output image
我需要为每条黑线添加一个对撞机,以防止我的游戏对象进入该区域 in/out,但我不知道该怎么做。 findContours 函数 returns 检测到的轮廓列表,每个轮廓都存储为点向量,但我如何使用它来生成碰撞器?
感谢您的帮助。
更新
这是我的源代码(用于更新方法)
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);
}
}
您可以在运行时使用 SetPath
函数编辑对撞机,您将向其传递一个二维点列表(您已经使用 findContours
函数计算过。
如果你想让你的对撞机有洞,你可以在多边形中有多个路径。