Color detection of object in Image

后端 未结 2 1716
予麋鹿
予麋鹿 2021-02-11 03:19

I am using opencv and python .

I need to detect color of object in image for example given below image , the color of shirt is red.

相关标签:
2条回答
  • 2021-02-11 03:57

    Getting the dominant colors may be achieved using the following simple approach:

    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: take only the center of the image:

    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: count cluster pixels, order clusters by cluster size

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

    You can remove BG and skin pixels with this kind of preprocessing

    0 讨论(0)
  • 2021-02-11 04:09
    1. Load the frame
    2. Convert BGR to HSV
    3. Range the value of pixel

    also check out this link Color detection in opencv

    0 讨论(0)
提交回复
热议问题