Как найти расстояние между пикселями на изображении python
Посчитайте расстояние между черными пикселями на картинке.
Ответ округлите до пяти знаков после точки.
Если дробной части нет, дробная часть отбрасывается.

import numpy as np
from PIL import Image
import math
im=Image.open("index.png").convert("RGB")
npimage=np.array(im)
p1, p2 = np.argwhere((npimage == [0, 0, 0]).all(axis=2))
l = abs(complex(*p1) - complex(*p2))
print(round(l, 5))
Ответы (1 шт):
Автор решения: Кирилл Малышев
→ Ссылка
Если у вас трёхканальное изображение M x N x 3 (как в вашем коде), то можно сделать так:
p1, p2 = np.argwhere((npimage == [0, 0, 0]).all(axis=2))
l = abs(complex(*p1) - complex(*p2))
Если вы будете открывать изображение сразу в оттенках серого:
im=Image.open("index.png").convert("L")
Или конвертируете уже открытое трёхканальное изображение:
im = im.convert("L")
То решение будет такое:
p1, p2 = np.argwhere(npimage == 0)
l = abs(complex(*p1) - complex(*p2))
Если у вас изображение с одним каналом и размерностью M x N x 1, то просто убирите последнюю размерность:
p1, p2 = np.argwhere(npimage[:,:,0] == 0)
l = abs(complex(*p1) - complex(*p2))