为确定的界标点绘制轮廓(OpenCvForUnity)

问题描述 投票:0回答:1

我之前在OpenCV中使用python。但是我越来越难以统一使用OpenCV。

I训练面部特定点的数据。我可以找到界标点,并且可以在统一的webcamTexture上显示该点,但是我想在由我确定的界标点上绘制轮廓。首先,我需要将界标点转换为凸包点,以在现有点之间绘制轮廓。如何转换?

我尝试过

List<List<Vector2>> landmarkPoints = new List<List<Vector2>>();
OpenCVForUnityUtils.ConvertVector2ListToArray(landmarkPoints) ;

但是里程碑点不会转换。我需要将地标点转换为船体点​​。

Imgproc.drawContours (rgbaMat, hullPoints, -1, new Scalar (0, 255, 0), 2);

您能帮我吗?

c# opencv unity3d face-detection
1个回答
0
投票

我终于找到了这个解决方案。如果您遇到相同的问题,答案可以为您提供帮助。

// detect face landmark points.
OpenCVForUnityUtils.SetImage(faceLandmarkDetector, rgbaMat);
for (int i = 0; i < trackedRects.Count; i++)
{
  List<Vector2> points = faceLandmarkDetector.DetectLandmark(rect);
  List<Vector2> pointss = new List<Vector2>();
  //Draw Contours
  List<Point> pointsss = OpenCVForUnityUtils.ConvertVector2ListToPointList(pointss);
  MatOfPoint hullPointMat = new MatOfPoint();
  hullPointMat.fromList(pointsss);
  List<MatOfPoint> hullPoints = new List<MatOfPoint>();
  hullPoints.Add(hullPointMat);
  Imgproc.drawContours(rgbaMat, hullPoints, -1, new Scalar(150, 100, 5,255), -1);
}


© www.soinside.com 2019 - 2024. All rights reserved.