OpenCV——证件照自动抠图

今天去交社保,要白底的电子版照片,我目前手头就是一个蓝底的,又不想手动抠图,于是想做一个自动换背景的程序。

先上效果:

OpenCV——证件照自动抠图

OpenCV——证件照自动抠图

具体分三步,第一步是大体的背景转换,把蓝色变为白色:

void colortransfer(cv::Mat image) //蓝背景转白背景,有边缘残留 { int Diff; int num_row = image.rows; int num_col = image.cols; for (int r = 0; r < num_row; r++) { cv::Vec3b *data = image.ptr<cv::Vec3b>(r); for (int c = 0; c < num_col; c++) { Diff = data[c][0] - (data[c][1] + data[c][2]) / 2; //蓝色检测 if (Diff > 60 && data[c][0]>150)//蓝色分量比GR分量的平均值高60且蓝色分量大于150 { data[c][0] = 255; data[c][1] = 255; data[c][2] = 255; } } } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzwfdj.html