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

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

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


person K. Grouleff    schedule 20.07.2017    source источник


Ответы (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);
}

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

person Leonid Vasilev    schedule 21.07.2017