Определение цвета объекта в изображении

Я использую opencv и python.

Мне нужно определить цвет объекта на изображении, например, приведенного ниже изображения, цвет рубашки красный.

введите описание изображения здесь

введите описание изображения здесь

По этой ссылке я нашел что-то полезное, но обнаружил его образ кожи. http://lokeshdhakar.com/projects/color-thief/

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

  • Преобразование цветового набора RGB в шестизначный код, в Python
  • Вычислить значение RGB для диапазона значений для создания карты тепла
  • Какой наиболее точный способ отличить один из 8 цветов?
  • Преобразование из CMYK в RGB с подушкой отличается от преобразования Photoshop
  • Преобразование цветового пространства PIL YCbCr -> RGB
  • Получите пиксель RGB с использованием PIL
  • Как я могу прочитать значение RGB данного пикселя в Python?
  • RGB Int в RGB - Python
  • 2 Solutions collect form web for “Определение цвета объекта в изображении”

    Получение доминирующих цветов может быть достигнуто с использованием следующего простого подхода:

    from sklearn.cluster import KMeans import numpy as np import matplotlib.pyplot as plt import matplotlib.patches as patches img = cv2.imread('red_shirt.jpg') height, width, dim = img.shape 

    EDIT: возьмите только центр изображения:

     img = img[(height/4):(3*height/4), (width/4):(3*width/4), :] height, width, dim = img.shape img_vec = np.reshape(img, [height * width, dim] ) kmeans = KMeans(n_clusters=3) kmeans.fit( img_vec ) 

    EDIT: подсчет пикселей кластера, кластеров заказов по размеру кластера

     unique_l, counts_l = np.unique(kmeans.labels_, return_counts=True) sort_ix = np.argsort(counts_l) sort_ix = sort_ix[::-1] fig = plt.figure() ax = fig.add_subplot(111) x_from = 0.05 for cluster_center in kmeans.cluster_centers_[sort_ix]: ax.add_patch(patches.Rectangle( (x_from, 0.05), 0.29, 0.9, alpha=None, facecolor='#%02x%02x%02x' % (cluster_center[2], cluster_center[1], cluster_center[0] ) ) ) x_from = x_from + 0.31 plt.show() 

    введите описание изображения здесь

    Вы можете удалить BG и пиксели кожи с помощью такой предварительной обработки

    1. Загрузите рамку
    2. Преобразование BGR в HSV
    3. Измените значение пикселя

    также ознакомьтесь с этой ссылкой Распознавание цвета в opencv

    Python - лучший язык программирования в мире.