2016-05-04 11 views

Antwort

4

die dominanten Farben gibt es die folgende Verwendung erreicht werden kann, einfacher Ansatz:

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: nehmen nur die Mitte des Bildes:

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: Anzahl Cluster Pixel, um Cluster von Clustergröße

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

Sie können BG entfernen und Hautpixel mit this kind of preprocessing

+0

Nizza krank, dass überprüfen, das ist das Ding, das ich suchte – usernan

+0

Wenn Sie nur eine einzige Farbe benötigen, können Sie mehrere Heuristiken für die Auswahl der richtigen Farbe basierend auf Ort, Sättigung und Pixel verwenden zählen, aber das hängt von der Erscheinung Ihrer Eingabe und den genauen Anforderungen ab –

+0

Ich entferne Hintergrundbild und versuche dann, die Farbe zu finden, bez die meiste Zeit es gibt mir weiß als erste Wahl – usernan

1
  1. laden Rahmen
  2. konvertieren BGR HSV
  3. Bereich der Wert des Pixels

auch diesen Link überprüfen Color detection in opencv

+0

Über Sol, das Sie gesagt haben, wenn Sie bestimmte Farben erkennen möchten, erkennen Sie blaue Farbe im Bild. aber ich will herausfinden, was ist die Farbe des Bildes – usernan