Coming from software development, i\'m new to image processing. I try to get the distance between two pixels in an image that is a numpy array of shape (100, 100, 3).
<Let's start with a test image. It is 400x300 pixels of gray(192), with:
Now do this:
import numpy as np
import PIL
import math
# Load image and ensure RGB - just in case palettised
im=Image.open("a.png").convert("RGB")
# Make numpy array from image
npimage=np.array(im)
# Describe what a single red pixel looks like
red=np.array([255,0,0],dtype=np.uint8)
# Find [x,y] coordinates of all red pixels
reds=np.where(np.all((npimage==red),axis=-1))
This gives:
(array([10, 10, 10, 11, 11, 11, 12, 12, 12]),
array([20, 21, 22, 20, 21, 22, 20, 21, 22]))
Now let's do the blue pixels:
# Describe what a single blue pixel looks like
blue=np.array([0,0,255],dtype=np.uint8)
# Find [x,y] coordinates of all blue pixels
blues=np.where(np.all((npimage==blue),axis=-1))
This gives:
(array([200, 200, 200, 201, 201, 201, 202, 202, 202]),
array([300, 301, 302, 300, 301, 302, 300, 301, 302]))
So now we need the distance from the first red to the first blue pixel
dx2 = (blues[0][0]-reds[0][0])**2 # (200-10)^2
dy2 = (blues[1][0]-reds[1][0])**2 # (300-20)^2
distance = math.sqrt(dx2 + dy2)