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

时间:2017-07-20 14:25:19

标签: c# delegates unsafe opencvsharp

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

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

1 个答案:

答案 0 :(得分:1)

您需要在不安全的上下文中将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);
}

有关详细信息,请查看: