2016-05-04 2 views
2

Я использую opencv и python.Определение цвета объекта в изображении

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

enter image description here

enter image description here

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

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

ответ

4

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

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) 

РЕДАКТИРОВАТЬ: Количество кластеров пикселей, кластеры порядка по размеру кластера

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() 

enter image description here

Вы можете удалить BG и пиксели кожи с this kind of preprocessing

+0

Ничего плохого проверить, это то, что я искал – usernan

+0

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

+0

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

1
  1. нагрузки кадр
  2. Преобразование BGR ВПГ
  3. Range значение пикселя

также проверить эту ссылку Color detection in opencv

+0

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

Смежные вопросы