在贾志刚老师的带领下去做了用GMM的方法做证件照背景替换。
void IDPHOTO()
{
string image_path = "tx.png";
Mat src_image = imread(image_path);
if (!src_image.data)
{
cout << "could not load image.." << endl;
return ;
}
imshow("src_image", src_image);
int width = src_image.cols;
int height = src_image.rows;
int dims = src_image.channels();
//选择浮点数,因为要用到浮点运算
Mat samples(width * height, dims, CV_32FC1);
for (int row = 0; row < height; row++)
{
uchar* ptr_src = src_image.ptr<uchar>(row);
for (int col = 0; col < width * dims; col += dims)
{
int index = row * width + col / dims;
samples.at<float>(index, 0) = ptr_src[col + 0];
samples.at<float>(index, 1) = ptr_src[col + 1];
samples.at<float>(index, 2) = ptr_src[col + 2];
}
}
int cluster = 4;
int covmattype = EM::Types::COV_MAT_SPHERICA