Самый быстрый способ подсчитать количество вхождений списка элементов из numpy.ndarrayPython

Программы на Python
Гость
Самый быстрый способ подсчитать количество вхождений списка элементов из numpy.ndarray

Сообщение Гость »

У меня есть гистограмма изображения. По сути, гистограмма изображения — это график, который показывает, сколько раз в изображении встречается пиксель, преобразованный в значение 0–255. С номером появления по оси Y и значением пикселя по оси X.
Изображение

И что мне нужно, так это общее количество пикселей от 75 до 125

Код: Выделить всё

image= cv2.imread('grade_0.jpg')
listOfNumbers = image.ravel() #generates the long list of 0-255 values from the image) type numpy.ndarray
Сейчас мой код делает это путем преобразования numpy.ndarray в список и подсчета каждого значения одно за другим

Код: Выделить всё

start = time.time()
numberlist = list(list0fNumbers)

sum = 0
for x in range(75,125):
sum = sum + numberlist.count(x)
end = time.time()

print('Sum: ' + str(sum))
print('Execution time_ms: ' + str((end-start) * 10**3))
Результат:

Код: Выделить всё

Sum: 57111
Execution time_ms: 13492.571830749512
Я бы сделал что-то подобное для тысяч изображений, и только для этого изображения это заняло 13 секунд. Это слишком неэффективно. Есть какие-нибудь рекомендации о том, как ускорить его примерно до 10 мс? Я буду получать не только сумму 75-125, но и другие диапазоны, например. 0-80,75-125,120-220,210-255. Если предположить, что обработка одного изображения размером 256x256 пикселей тоже занимает 13 секунд, то это займет около 60 секунд, что, я бы сказал, немного долго даже для медленного компьютера.
Вот пример изображения:
Изображение


Подробнее здесь: https://stackoverflow.com/questions/781 ... -a-numpy-n

Вернуться в «Python»