如何在 OpenCVsharp 中使用 Mat.ForEachAsDouble 方法

How to use Mat.ForEachAsDouble method in OpenCVsharp

我正在尝试评估 OpenCvsharp 中的 ForEachAs 方法,但我不确定如何使用该方法。

我已经将灰度图像加载到 Mat 类型中。然后,我尝试在此图像上使用 ForEachAsInt16 方法。 ForEachAsInt16 方法将 MatForeachFunctionInt16 操作作为输入。所以我需要实例化一个这种类型的函数指针(委托)。我该怎么做?

您需要在不安全上下文中将具有适当签名的 unsafe 命名函数作为 ForEachAsInt16() 参数传递,并使用 /unsafe 关键字编译您的项目。

具有适当签名的函数示例:

unsafe static void Operation(short* pixel, int* position)
{
    // Get or set pixel value.
    short intencity = *pixel;
    var row = position[0];
    var col = position[1];
}

您可以将其作为参数传递:

unsafe
{
    mat.ForEachAsInt16(Operation);
}

更多信息请查看: