Как найти расстояние между пикселями на изображении 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))
→ Ссылка