在今天这节课程中,我们探究了通过K均值聚类算法如何实现图像的艺术化,也就是对图像颜色进行特别的分类与映射。举了一个简单的例子:猫的图像,最初只有黑白两色,但使用K均值聚类后,得到了两种更为新颖的颜色,带来了艺术画效果。算法的执行过程相当简洁,仅涉及到三个主
using namespace std; int main( int argc, char **argv) { IplImage *imgA = cvLoadImage( "1.jpg", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR); if(imgA ==NULL) { cout<<"Can't Load Image ." << endl; exit(0); } cvNamedWindow("window",CV_WINDOW_AUTOSIZE); cvShowImage("windo...
# 使用K均值聚类算法对颜色进行聚类 kmeans = KMeans(n_clusters=k,n_init=10) kmeans.fit(image) # 获取每个簇的像素数量 counts = np.bincount(kmeans.labels_) # 返回数量最多的簇的中心点,即最常见的颜色 returnkmeans.cluster_centers_[np.argmax(counts)] defcompute_color_similarity(color1,color2...
K均值聚类: 1、任取[0,255]中K个值作为第一次分类中心; 2、把图像(gray)中的每一个点与K个中心值进行比较,按差值分成K组,求出新的K个中心点; 3、重复上一步骤,直到前后两次算出的中心点值相同; 4、按最后得到的中心点把图像依据点到中心点的距离分成K类。 程序: function [cen,copy]=Kmeans(I,k...
if(imgA ==NULL) { cout<<"Can't Load Image ." << endl; exit(0); } cvNamedWindow("window",CV_WINDOW_AUTOSIZE); cvShowImage("window",imgA);//加载原图 unsigned long int size; size = imgA->width * imgA->height;//取得图片大小 ...
{ cout<<"Can't Load Image ." << endl; exit(0); } cvNamedWindow("window",CV_WINDOW_AUTOSIZE); cvShowImage("window",imgA);//加载原图 unsigned long int size; size = imgA->width * imgA->height;//取得图片大小 CvMat *clusters;//分类后的矩阵 ...