参考:
常用颜色
如果是蓝色背景,颜色值可设置为:R:60 G:140 B:220 或C:85 M:40 Y:0 K:0.
如果用红色背景,颜色值可设置为:R:255 G:0 B:0 或C:0 M:100 Y:100 K:0.
附:中华人民共和国出入境/护照照片的 背景蓝色值:R:67 G:142 B:219
二代身份证和社保相的 背景色值:R:255 G:255 B:255即纯白色。
一、非白色背景
1.把RGB图像转换到HSV空间
2.取背景的一小块20*20,计算蓝色背景的平均色调和饱和度
3.设置阈值,取出蓝色背景替换为红色背景
4.把HSV图像转换会RGB空间
5.滤波器去除边缘效应
此方法问题
服饰的颜色会受到影响,蓝领带可能会变成红领带!
二、白色背景
方法一:对图像每个点遍历,只保留RGB小于数值的点
核心代码
for(j = 0;j< pImg1->height ; j++){
uchar* ptr = (uchar*)(pImg1->imageData+j*pImg1->widthStep);
uchar* ptr1 = (uchar*)(pfish->imageData+j*pfish->widthStep);
uchar* ptr2 = (uchar*)(bk.data.ptr+j*bk.step);
for(i = 0;i < pImg1->width ; i++)
{
if(ptr[i] < 250) //像素值小于250的保留下来 并显示到背景图上 即白色部分被去除
{
ptr2[i*3] = ptr1[i*3];
ptr2[i*3 + 1] = ptr1[i*3 + 1];
ptr2[i*3 + 2] = ptr1[i*3 + 2];
}
}
}
此方法问题
只适用于纯白背景或者非常偏向白色背景