我正在使用opencv和python。圖像中物體的顏色檢測
我需要檢測圖像中物體的顏色,例如下圖所示,襯衫的顏色是紅色的。
在這個環節,我發現一些有用的東西,但皮膚及其檢測圖像。我想我將不得不使用圖像輪廓提取,然後進行顏色檢測。
我正在使用opencv和python。圖像中物體的顏色檢測
我需要檢測圖像中物體的顏色,例如下圖所示,襯衫的顏色是紅色的。
在這個環節,我發現一些有用的東西,但皮膚及其檢測圖像。我想我將不得不使用圖像輪廓提取,然後進行顏色檢測。
獲得主色,可以實現使用以下簡單的方法:
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
編輯:僅取的圖像的中心:
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()
可以移除BG和皮膚像素與this kind of preprocessing
還檢查了這個鏈接Color detection in opencv
以上sol你說的是當你想要檢測給定的顏色例子檢測圖像中的藍色。但我想知道什麼是圖像的顏色 – usernan
好生病檢查出來,這是我尋找的東西 – usernan
如果你只需要一種顏色,你可以使用幾種啓發式方法來根據位置,飽和度和像素來選擇合適的顏色計數,但這取決於您的輸入的外觀和確切的要求 –
我正在刪除背景圖像,然後試圖找出顏色,貝茲大部分時間它給我白色作爲第一選擇 – usernan