У меня есть гистограмма изображения. По сути, гистограмма изображения — это график, который показывает, сколько раз в изображении встречается пиксель, преобразованный в значение 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