У меня есть папка, полная изображений, и я хочу найти значения оттенков с наименьшим появлением.Для этого я создаю массив длиной 360 для всех значений оттенка, беру все изображения в моей папке, просматриваю его и для каждого пикселя добавляю +1 в свой массив в индексе, который представляет значение оттенка.Если у меня есть, например, значение оттенка 0 в моем пикселе, я добавляю +1 в моем массиве с индексом 0. Мой вопрос: есть ли более быстрый или более эффективный способ сделать это?
Вот мой код:
path = 'path'
sub_path = 'sub_path'
sumHueOcc = np.zeros((360, 1), dtype=np.uint64)
for item in dirs:
fullpath = os.path.join(path,item)
pathos = os.path.join(sub_path,item)
if os.path.isfile(fullpath):
f, e = os.path.splitext(pathos)
img = np.array(Image.open(fullpath))
img = np.float32(img)
imgHSV = cv2.cvtColor(img, cv2.COLOR_RGB2HSV_FULL) #RGB because numpy RGB
# want to work with hue only
h, s, v = cv2.split(imgHSV)
# the hue values in one large array
Z = np.array(h, copy=True)
Z = Z.reshape((-1, 1))
# convert to np.float32
Z = np.uint64(Z)
# count each appearence from hue values
for z in Z:
sumHueOcc[z] = sumHueOcc[z] + 1
max = np.argmax(sumHueOcc)
min = np.argmin(sumHueOcc)
print("Minimum 1")
print(min)
sumHueOcc[min] += max
min = np.argmin(sumHueOcc)
print("Minimum 2")
print(min)
sumHueOcc[min] += max
min = np.argmin(sumHueOcc)
print("Minimum 3")
print(min)
sumHueOcc[min] += max
min = np.argmin(sumHueOcc)
print("Minimum 4")
print(min)