当前位置: 首页 > 网络知识

OpenCV3.2图像分割 实例9:K-Means-证件照背景替换

时间:2026-01-29 09:25:31
1 #include <opencv2/opencv.hpp> 2 #include <iostream> 3 4 using namespace cv; 5 using namespace std; 6 7 Mat mat_to_samples(Mat &image); 8 int main(int argc, char** argv) 14 namedWindow("输入图像", CV_WINDOW_AUTOSIZE); 15 imshow("输入图像", src); 16 17 // 组装数据 18 Mat points = mat_to_samples(src); 19 20 // 运行KMeans 21 int numCluster = 4; 22 Mat labels; 23 Mat centers; 24 TermCriteria criteria = TermCriteria(TermCriteria::EPS + TermCriteria::COUNT, 10, 0.1); 25 kmeans(points, numCluster, labels, criteria, 3, KMEANS_PP_CENTERS, centers); 26 27 // 去背景+遮罩生成 28 Mat mask=Mat::zeros(src.size(), CV_8UC1); 29 int index = src.rows*2 + 2; 30 int cindex = labels.at<int>(index, 0); 31 int height = src.rows; 32 int width = srcols; 33 //Mat dst; 34 //srcopyTo(dst); 35 for (int row = 0; row < height; row++) else 47 } 48 } 49 imshow("mask遮罩", mask); 50 51 // 腐蚀 + 高斯模糊 52 Mat k = getStructuringElement(MORPH_RECT, Size(3, 3), Point(1, 1));//用3*3像素进行腐蚀(减少3*3) 53 erode(mask, mask, k); 54 imshow("腐蚀mask", mask); 55 GaussianBlur(mask, mask, Size(3, 3), 0, 0);//用3*3像素进行高斯模糊(增加3*3) 所以边界不变 56 imshow("高斯模糊mask", mask); 57 58 // 通道混合 59 RNG rng(12345);//随机数 60 Vec3b color; 61 color[0] = 217;//rng.uniform(0, 255); 62 color[1] = 60;// rng.uniform(0, 255); color[2] = 160;// rng.uniform(0, 255); 64 Mat result(src.size(), src.type()); 65 66 double w = 0.0; 67 int b = 0, g = 0, r = 0; 68 int b1 = 0, g1 = 0, r1 = 0; 69 int b2 = 0, g2 = 0, r2 = 0; 70 71 for (int row = 0; row < height; row++) 77 else if (m == 0) 80 else 98 } 99 } 100 imshow("背景替换", result); 101 102 waitKey(0); 103 return 0; 104 } 105 106 Mat mat_to_samples(Mat &image) 122 } 123 return points; 124 }



上一篇:ITK 实例16 阈值水平集算法对脑部PNG图像进行二维分割
下一篇:OpenCV3.3深度神经网络DNN模块 实例1:读取单张PNG文件(opencv3.3环境测试)
OpenCV
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器
  • 英特尔第五代 Xeon CPU 来了:详细信息和行业反应
  • 由于云计算放缓引发扩张担忧,甲骨文股价暴跌
  • Web开发状况报告详细介绍可组合架构的优点
  • 如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳
  • 美光在数据中心需求增长后给出了强有力的预测
  • 2027服务器市场价值将接近1960亿美元
  • 生成式人工智能的下一步是什么?
  • 分享在外部存储上安装Ubuntu的5种方法技巧
  • 全球数据中心发展的关键考虑因素
  • 英特尔与 Vertiv 合作开发液冷 AI 处理器

    英特尔第五代 Xeon CPU 来了:详细信息和行业反应

    由于云计算放缓引发扩张担忧,甲骨文股价暴跌

    Web开发状况报告详细介绍可组合架构的优点

    如何使用 PowerShell 的 Get-Date Cmdlet 创建时间戳

    美光在数据中心需求增长后给出了强有力的预测

    2027服务器市场价值将接近1960亿美元

    生成式人工智能的下一步是什么?

    分享在外部存储上安装Ubuntu的5种方法技巧

    全球数据中心发展的关键考虑因素