Как использовать метод 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);
}
Для получения дополнительной информации проверьте:
- cv:: Mat:: forEach () документация OpenCV
- небезопасная ссылка на MSDN
- Ссылка на /unsafe (параметры компилятора C#)
- Имплементация "cv::Mat::forEach" (пересмотренная) тянуть запрос к OpenCV