Я обнаруживаю зеленый цвет, используя PIL и numpy. Так как код находит много зеленых пикселей даже в не зеленой области. Таким образом, я нахожу ближайшее их значение к указанному мною значению, я получаю 3 точки соответствия, которые обеспечивают матрицу (1512L, 3L). Код ниже. В результате я хочу нанести эту матрицу на исходное изображение, чтобы увидеть местоположение. Как я могу это сделать ? Пример изображения также ниже.
import numpy as np
from PIL import Image
# Open image and make RGB and HSV versions
RGBim = Image.open("AdjustedNewMaze3.jpg").convert('RGB')
HSVim = RGBim.convert('HSV')
# Make numpy versions
RGBna = np.array(RGBim)
HSVna = np.array(HSVim)
# Extract Hue
H = HSVna[:,:,0]
# Find all green pixels, i.e. where 100 < Hue < 140
lo,hi = 100,140
# Rescale to 0-255, rather than 0-360 because we are using uint8
lo = int((lo * 255) / 360)
hi = int((hi * 255) / 360)
green = np.where((H>lo) & (H<hi))
# Make all green pixels black in original image
RGBna[green] = [0,0,0]
def find_nearest(array, value):
array = np.asarray(array)
idx = (np.abs(array - value)).argmin()
return array[idx]
value = 120
green = find_nearest(RGBna, value)
average = np.average(green)
print(green)
count = green[0].size
print("Pixels matched: {}".format(count))
Image.fromarray(green).save('resultgreen.png')