未提供与“Cv2.FindNonZero(InputArray, 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 09:01:59 浏览: 26
根据您提供的代码,需要为`Cv2.FindNonZero`函数提供一个名为`idx`的必需参数。`idx`参数用于存储非零像素的索引。您可以将其声明为一个整数数组,并将其传递给函数:
```
int[] idx;
Point[] points = Cv2.FindNonZero(roiImageCanny, out idx)
.Select(p => new Point(p.X + center.X - radius - partWidth, p.Y + center.Y - radius - partWidth))
.ToArray();
```
这里,我们声明了一个名为`idx`的整数数组,并通过`out`关键字将其传递给`Cv2.FindNonZero`函数。函数将非零像素的索引存储在该数组中,而点数组则通过`Select`方法进行了计算。最后,使用`ToArray`方法将点序列转换为数组。
相关问题
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();
函数`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`即为处理后的结果。
opencvsharp Cv2.GaussianBlur
OpenCvSharp是一个基于OpenCV的C#封装库,提供了对OpenCV功能的访问和使用。Cv2.GaussianBlur是OpenCvSharp中的一个函数,用于对图像进行高斯模糊处理。
高斯模糊是一种常用的图像处理方法,它通过对图像中的每个像素点周围的像素进行加权平均来实现。这种加权平均的权重是根据高斯函数计算得到的,距离中心像素点越远的像素点权重越小。
Cv2.GaussianBlur函数的语法如下:
```csharp
public static void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY = 0, BorderType borderType = BorderType.Default);
```
参数说明:
- src:输入图像,可以是单通道或多通道图像。
- dst:输出图像,与输入图像具有相同的尺寸和类型。
- ksize:高斯核的大小,指定高斯核的宽度和高度。必须是正奇数。
- sigmaX:X方向上的高斯核标准差。
- sigmaY:Y方向上的高斯核标准差,默认为0,表示与sigmaX相同。
- borderType:边界处理方式,默认为BorderType.Default。
函数调用示例:
```csharp
using OpenCvSharp;
Mat srcImage = new Mat("input.jpg", ImreadModes.Color);
Mat dstImage = new Mat();
Cv2.GaussianBlur(srcImage, dstImage, new Size(5, 5), 0, 0);
Cv2.ImShow("Gaussian Blur", dstImage);
v2.WaitKey(0);
```