OpenCvSharp public static void FindNonZero(InputArray src, OutputArray idx); 的定义,如何实现以下调用 OpenCvSharp. Point[] points = Cv2.FindNonZero(roiImageCanny).Select(p => new Point(p.X + center.X - radius - partWidth, p.Y + center.Y - radius - partWidth)).ToArray();
时间: 2024-01-08 16:02:28 浏览: 215
gaosimohu.rar_week8jv_基于opencv的高斯模糊的实现
函数`FindNonZero(InputArray src, OutputArray idx)`的作用是找到输入数组中非零元素的索引。其中,`src`是输入的图像数组,`idx`是输出的非零元素索引。
在你的代码中,`Cv2.FindNonZero(roiImageCanny)`返回的结果是一个`Mat`类型的输出数组`idx`,它包含了所有非零元素的索引。接着,通过`Select`方法将每个索引点转换为`Point`类型,并且将每个点的坐标进行偏移,最后使用`ToArray`方法将结果转换为一个`Point`类型的数组。
具体实现代码如下:
```csharp
Mat idx = new Mat();
Cv2.FindNonZero(roiImageCanny, idx);
Point[] points = idx.ToPointArray().Select(p => new Point(p.X + center.X - radius - partWidth, p.Y + center.Y - radius - partWidth)).ToArray();
```
其中,`idx.ToPointArray()`将`Mat`类型的输出数组转化为`Point`类型的数组。最后,`points`即为处理后的结果。
阅读全文