Почему `cv2.threshold` принимает только изображения в градациях серого? - PullRequest
0 голосов
/ 12 января 2020

Я работаю над некоторыми проектами, связанными с OpenCV, и наткнулся на функцию cv2.threshold. Почему эта функция принимает только изображения в градациях серого? Кто-нибудь может объяснить это мне?

1 Ответ

0 голосов
/ 12 января 2020

ОБНОВЛЕНИЕ:

Смотрите комментарии по этому вопросу вместо того, чтобы читать его.



Я согласен с @Cris, как он сказал в комментариях "никто не нашел это полезным реализовать его для цветных изображений ".

Существует множество функций, позволяющих добиться того же самого в очень сжатой форме, которые зависят от вашего варианта использования.

Но это все еще вопрос общего любопытства от новичок. Таким образом, одним простым подходом к тому же может быть:

def bgr_threshold(src_bgr, thresh_bgr, maxval_bgr, type_bgr):
    b, g, r = cv2.split(src_bgr)
    thresh_b, thresh_g, thresh_r = thresh_bgr
    maxval_b, maxval_g, maxval_r = maxval_bgr
    type_b, type_g, type_r = type_bgr

    ret_b, thresh_img_b = cv2.threshold(b, thresh_b, maxval_b, type_b)
    ret_g, thresh_img_g = cv2.threshold(g, thresh_g, maxval_g, type_g)
    ret_r, thresh_img_r = cv2.threshold(r, thresh_r, maxval_r, type_r)

    thresh_img_bgr = cv2.merge((thresh_img_b, thresh_img_g, thresh_img_r))

    return ((ret_b, ret_g, ret_r), thresh_img_bgr)

ret, th = bgr_threshold(image, (127, )*3, (255, )*3, (cv2.THRESH_BINARY, )*3)

Хотя это делает его с точки зрения оптимизации почти в 3 раза медленнее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...