Более быстрый способ расчета интенсивности пикселей (значения цвета) без итерации по всем пикселям в изображении - PullRequest
1 голос
/ 11 марта 2019

Я выполняю операцию, в которой мне нужно вычислить сумму интенсивности всех пикселей, если значение пикселя> 0. В настоящее время я перебираю каждый пиксель, который медленнее. Кто-нибудь может предложить более быстрый способ улучшить мой код?

h, w = image.shape[:]
total_intensity = 0
for x in range(h):
    for y in range(w):
        if (image[x][y] > 0):
            total_intensity += image[x][y]

Ответы [ 2 ]

2 голосов
/ 11 марта 2019

если изображение является массивом, вы можете просто сделать это:

total_intensity = image[image > 0].sum()

если у вас очень большое изображение, вы должны беспокоиться о проблемах переполнения в сумме, поэтому я настоятельно рекомендую сначала привести изображение

image = np.int64(image)
0 голосов
/ 11 марта 2019

Вы можете сделать это:

total_intensity = sum(sum(filter(lambda i: i > 0, image[j])) for j in image)

Где 0 ваше состояние минимальной интенсивности

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