int imageSeg_GMM()
{
string image_path = "D:/vs2019Proj/ConsoleApplication1/timg.jpg";
Mat src_image = imread(image_path);
if (src_image.empty())
{
cout << "could not load image.." << endl;
return -1;
}
//颜色板
vector<Scalar> colorTab = {
{0,0,255},
{0,255,0},
{255,0,0},
{255,255,0},
{0,255,255},
{255,0,255}
};
//获取输入图像的尺寸
int width = src_image.cols;
int height = src_image.rows;
int chnes = src_image.channels();
//把彩色图像中的数据点提取出来放入points里面
//points的类型是CV_64FC1
//为什么这里使用的是CV_64FC1,因为GMM中需要计算概率,协方差等,需要大量的浮点运算
//下面的代码同时适用于灰度图和3-d,4-d彩色图的遍历
Mat points(width * height, chnes, CV_64FC1, Scalar(10));
for (int row = 0; row < height; row++)
{
uchar* ptr = src_image.ptr<uchar>(row);
for (int col = 0; col < width * chnes; col += chnes)
{
int index = row * width + col / chnes;
double* ptr_points = poin
Opencv之GMM(高斯混合模型)图像分割
最新推荐文章于 2022-08-23 11:44:01 发布
本文探讨了OpenCV中的GMM(高斯混合模型)在图像分割中的应用,相较于K-means,GMM由于涉及更多浮点运算,虽然效果更优,但速度相对较慢。文章还提及了EM算法的讲解及其类型。
摘要由CSDN通过智能技术生成