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

Posted

技术标签:

【中文标题】为确定的地标点绘制轮廓( OpenCvForUnity )【英文标题】:Draw contours for determined landmark points ( OpenCvForUnity ) 【发布时间】:2020-03-11 11:43:50 【问题描述】:

我以前用 Python 工作过 OpenCV。但是我越来越难以统一使用 OpenCV。

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

我试过了

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

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

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

你能帮帮我吗?

【问题讨论】:

【参考方案1】:

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

// 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);



【讨论】:

以上是关于为确定的地标点绘制轮廓( OpenCvForUnity )的主要内容,如果未能解决你的问题,请参考以下文章

绘制 OpenCV 轮廓并保存为透明图像

为多边形轮廓绘制圆的最有效方法

计算网格连通图的轮廓

在python中绘制轮廓

python --opencv图像处理轮廓(寻找轮廓绘制轮廓)详解

数据分析 第六篇:聚类的评估(簇数确定和轮廓系数)和可视化