使用C++、opencv中的高斯混合模型(GMM)进行图像分割
关于GMM聚类的原理及过程可参考博客:https://blog.csdn.net/lin_limin/article/details/81048411
使用聚类的方法分割图像,即将图像的像素点值(通常用彩色图像,像素点值为一个三元数组(b,g,r))作为聚类的元素,从而将图像中所有的点分为n类,达到分割的效果。
代码:
#include "stdafx.h"
#include<opencv2\opencv.hpp>
#include <iostream>
using namespace cv;
using namespace ml;
int main(int arc, char** argv)
{
Mat src = imread("C:/Users/lenovo/Desktop/1.jpg");
namedWindow("input", WINDOW_NORMAL);
imshow("input", src);
int width = src.cols;
int height = src.rows;
int dims = src.channels();
int pointsCount = width * height;
Mat points(pointsCount, dims, CV_64FC1);
Mat labels;
//Scalar color[] = { Scalar(0,0,255), Scalar(0,255,0), S