Automati c Canny Edge Detection in C# - PullRequest
0 голосов
/ 26 марта 2020

Я ищу автоматическое c обнаружение нижнего и верхнего значения для функции обнаружения кромки Канни в OpenCvSharp.

Я нашел следующий код, но, к сожалению, он не написан в C# (я программирую в Unity). Я не знаю, как я могу написать это в Unity (C#):

lower = int(max(0, (1.0 - sigma) * v))
upper = int(min(255, (1.0 + sigma) * v))

Может ли кто-нибудь помочь мне с этим?

(Источник: https://www.pyimagesearch.com/2015/04/06/zero-parameter-automatic-canny-edge-detection-with-python-and-opencv/)

def auto_canny(image, sigma=0.33):
    # compute the median of the single channel pixel intensities
    v = np.median(image)
    # apply automatic Canny edge detection using the computed median
    lower = int(max(0, (1.0 - sigma) * v))
    upper = int(min(255, (1.0 + sigma) * v))
    edged = cv2.Canny(image, lower, upper)
    # return the edged image
    return edged

1 Ответ

0 голосов
/ 26 марта 2020
v = np.median(image)

Нет встроенной функции для вычисления медианы . Простой (но не оптимальный) способ - отсортировать пикселей и выбрать среднее значение.

int(...)

Конвертировать из double в int с помощью (int)Math.Round(...) или просто (int)...

min(...)

В c# это Math.Min (...)

Все остальное - просто c arithmeti c, которое должно быть таким же.

...