Нахождение среднего значения яркости пикселей изображения внутри контура

Я нашел на изображении определенный контур. Я создал маску с черным цветом всего изображения, кроме граничных точек контура. Контур нанесен идеально. Щелкните здесь, чтобы увидеть созданный контур.

Теперь я хочу перейти к исходному изображению и получить среднее значение интенсивности пикселей для всех точек внутри этого контура исходного изображения. Когда я использую функцию cv.mean(), получаю ли я среднее значение только для точек, указанных маской, то есть только для граничных точек или всех точек внутри маски?

1 ответ

Решение

Самый простой способ сделать это - выделить на изображении пиксели, соответствующие местам, где маска белая. Если вам нужен пиксель на границе, используйте маску, как вы ее показали. Если вы хотите, чтобы пиксель находился на границе (и на ней); вместо этого нарисуйте его как заполненный контур(thickness=-1). Вот пример:

img = cv2.imread('image.jpg')
mask = cv2.imread('mask.png', 0)
locs = np.where(mask == 255)
pixels = img[locs]
print(np.mean(pixels))
Другие вопросы по тегам