最近发现一个问题,不知道是plt.scatter接口升级还是cv2.kmeans接口升级,以至于使用cv2.kmeans返回的结果bestLables在plt.scatter中c=使用时会出现参数错的现象发现,cv2.kmeans返回的是二维数组,plt.scatter中c=需要的是一维数组,所以需要转化一下
compactness, labels, centers = cv2.kmeans(X.astype(np.float32), 2,
None, criteria, 10, flags)
plt.scatter(X[:, 0], X[:, 1], c=labels.flatten(), s=100, cmap='viridis')
这里labels.flatten()是把二维转一维的操作。
否则会有这个错误
ValueError: 'c' argument has 200 elements, which is not acceptable for use with 'x' with size 200, 'y' with size 200.
网友评论