Вычисление средней интенсивности пикселей для соседних пикселей только для определенных c точек изображения и сохранение в n-мерном массиве - PullRequest
0 голосов
/ 14 июля 2020

Я работаю над задачей распознавания лиц, где я хотел бы извлечь черты лица, но только из определенных c ключевых мест на изображении лица. Но для такой задачи мне нужно было бы вычислить среднее значение пикселя в соседней области этой определенной c части. Я делаю это вручную, потому что у меня нет алгоритма. Это исчерпывающий процесс. Вот как я это делаю:

img = plt.imread(path)
img[25, 40] = 0
img[25, 41] = 0
img[25, 39] = 0
img[26, 40] = 0
img[26, 39] = 0
img[26, 41] = 0
img[24, 39] = 0
img[24, 40] = 0
img[24, 41] = 0
img[25, 110] = 0
img[25, 111] = 0
img[25, 109] = 0
img[24, 109] = 0
img[24, 110] = 0
img[24, 111] = 0
img[26, 109] = 0
img[26, 110] = 0
img[26, 111] = 0
img[25, 170] = 0
img[25, 171] = 0
img[25, 169] = 0
img[24, 170] = 0
img[24, 171] = 0
img[24, 169] = 0
img[26, 170] = 0
img[26, 169] = 0
img[26, 171] = 0
img[40, 40] = 0
img[40, 41] = 0
img[40, 39] = 0
img[41, 40] = 0
img[41, 41] = 0
img[41, 39] = 0
img[39, 40] = 0
img[39, 39] = 0
img[39, 41] = 0
img[50, 110] = 0
img[50, 111] = 0
img[50, 109] = 0
img[51, 110] = 0
img[51, 111] = 0
img[51, 109] = 0
img[49, 110] = 0
img[40, 170] = 0
img[40, 171] = 0
img[40, 169] = 0
img[39, 170] = 0
img[39, 171] = 0
img[39, 169] = 0
img[41, 170] = 0
img[41, 171] = 0
img[41, 169] = 0

plt.imshow(img)

То, что я хотел бы сделать в основном, это иметь лучший способ вычислить среднее значение соседних 3x3 пикселей вокруг центра для 20 координат на изображении и сохранить внутри n-мерного вектора. Или для большей ясности: для выбранной ключевой точки 1 вычислить среднее значение в районе 3x3, сохраните это значение. ключевая точка 2 вычисляет среднее значение в районе 3x3, сохраняет значение. Для любой заданной ключевой точки, соответствующей координатам x и y на изображении. введите описание изображения здесь

Каждая ключевая точка - это среднее значение сетки, имеющей 3x3 пикселя, для которой мне нужно получить среднее значение и сохранить в массиве 20d. Как лучше всего это сделать?

1 Ответ

1 голос
/ 14 июля 2020

В Python / OpenCv просто используйте cv2.blur (), чтобы получить среднее значение блока 3x3 для всего изображения. Затем просто получите значения пикселей в размытом изображении в желаемых точках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...