Почему диаграмма пипсов не отображается при подсчете количества цветов в программе Python? - PullRequest
0 голосов
/ 19 марта 2019

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

Это мой код:

from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import numpy as np
import cv2
from collections import Counter
from skimage.color import rgb2lab, deltaE_cie76
import os

%matplotlib inline


def RGB2HEX(color):
    return "#{:02x}{:02x}{:02x}".format(int(color[0]), int(color[1]), int(color[2]))

def get_image(image_path):
    image = cv2.imread(image_path)
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    return image


modified_image = cv2.resize(image, (600, 400), interpolation = cv2.INTER_AREA)
modified_image = modified_image.reshape(modified_image.shape[0]*modified_image.shape[1], 3)

def get_colors (number_of_colors, show_chart):

    clf = KMeans(n_clusters = number_of_colors)


    labels = clf.fit_predict(modified_image)

    counts = Counter(labels)

    center_colors = clf.cluster_centers_
# We get ordered colors by iterating through the keys
    ordered_colors = [center_colors[i]/255 for i in counts.keys()]
    hex_colors = [RGB2HEX(ordered_colors[i]*255) for i in counts.keys()]
    rgb_colors = [ordered_colors[i]*255 for i in counts.keys()]

    if (show_chart):
        plt.figure(figsize = (8, 6))
        plt.pie(counts.values(), labels = hex_colors, colors = ordered_colors)



        get_colors(get_image('C://Users/user/Desktop/g.jpg'), 5, True)





    return rgb_colors

1 Ответ

0 голосов
/ 29 апреля 2019

Добавить plt.show()

if (show_chart):
    plt.figure(figsize=(12, 12))
    plt.pie(counts.values(), labels=hex_colors, colors=ordered_colors)
    plt.show()
return rgb_colors

затем:

get_colors(get_image('house.jpg'), 48, True)
...