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

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

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

  • Python - поиск доминирующего / наиболее распространенного цвета в изображении
  • Баланс белого (цветовое подавление) Формула?
  • введите описание изображения здесь

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

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

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

  • Представление и решение лабиринта с учетом изображения
  • Эффект пульсации воды Pygame
  • Сравните несколько гистограмм в файле OpenCV
  • Эффективное извлечение памяти перекрывающихся патчей из матрицы
  • модуль 'не имеет атрибута' drawMatches 'opencv 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 - лучший язык программирования в мире.