擅长:python、mysql、java
<p>1)如果你只需要找到主色,为什么不找到每个颜色通道的直方图?找到主通道,然后使用otsu仅分割该通道?例如,如果我只阈值的色调,我可以得到很好的结果。对于这项任务来说,K-means可能是一种过激行为:</p>
<pre><code>import cv2
import numpy as np
import matplotlib.pylab as plt
## Simple Otsu over hue
six = cv2.imread('7zovC.jpg')
##convert to hsv
hsv = cv2.cvtColor(six, cv2.COLOR_BGR2HSV)
hue = hsv[:, :, 0]
binary_img = cv2.threshold(hue, 128, 255, cv2.THRESH_OTSU)
plt.figure()
plt.imshow(binary_img*255)
plt.show()
</code></pre>
<p>2)为什么不使用所有通道进行聚类,而不仅仅是色调?您需要的是聚类->;颜色量化此<a href="http://docs.opencv.org/3.0-beta/doc/py_tutorials/py_ml/py_kmeans/py_kmeans_opencv/py_kmeans_opencv.html#color-quantization" rel="nofollow">link</a>应该有用。这是针对opencv 3.0.0版的</p>
<p>注意,对于python 2.4.11,cv2.kmeans有一个稍有不同的接口,您可以使用以下接口:</p>
^{pr2}$
<p>我的颜色量化结果并不令人印象深刻。在</p>