Я знаком с функцией inRange OpenCV для создания маски.Допустим, я хочу получить маску пикселей в цветовом диапазоне «вокруг» определенного цвета, я могу сделать это:
color = np.array([240, 60, 70])
max_dist = 50
img = cv2.inRange(img, [color] - max_dist, [color] + max_dist)
Но это маскирует все цвета BGR в «кубе» вокруг центрального цвета,Я ищу альтернативу, используя «сферу» вокруг центрального цвета в пространстве BGR, то есть евклидово расстояние.Любые идеи?
Я могу, конечно, пройтись по изображению, вычислить расстояния, используя scipy.spatial.distance.cdist, а затем пройти по всем пикселям по одному и либо включить, либо исключить их из маски.Тем не менее, это очень медленно в питоне ...
Спасибо!