Как использовать метод Mat.ForEachAsDouble в OpenCVsharp

Я пытаюсь оценить метод ForEachAs в OpenCvsharp, но я не уверен, как его использовать.

Я загрузил серое изображение в тип Mat. Затем я пытаюсь использовать метод ForEachAsInt16 на этом изображении. Метод ForEachAsInt16 принимает в качестве ввода операцию MatForeachFunctionInt16. Поэтому мне нужно создать указатель на функцию (делегат) этого типа. Как я могу это сделать?

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

Для получения дополнительной информации проверьте:

Другие вопросы по тегам