Улучшение времени выполнения для рисования кода гистограммы - PullRequest
1 голос
/ 03 июля 2019

Есть ли способ ускорить этот код? Этот код вычисляет гистограмму изображения и отображает его.

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

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt

img = cv.imread('img.PNG')
img = cv.cvtColor(img, cv.COLOR_BGR2GRAY)

histogram = np.zeros(256, dtype=np.uint8)

for i in range(img.shape[0]):
    for j in range(img.shape[1]):
        for k in range(len(histogram)):
            if img[i][j] == k:
                histogram[k] += 1
plt.figure()
plt.title('Gray Scale Histogram')
plt.xlabel('gray scale value')
plt.ylabel('pixels')
plt.plot(histogram)

plt.show()

1 Ответ

0 голосов
/ 03 июля 2019

Избавьтесь от тройного цикла и сравнения и воспользуйтесь преимуществом эффективного оператора сравнения Bumpy.Конечно, это работает, только если img являются целыми числами.Если плавает, округлите данные.

    for k in range(len(histogram)):
        histogram[k] = np.sum(img.flat == k)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...