有个蓝底证件照,想换成白色的。
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
int main()
{
IplImage *img = cvLoadImage("C:\\ss.jpg", 1);
if(img == NULL)
return 0;
int w = img->width;
int h = img->height;
IplImage *newImg = cvCreateImage(cvGetSize(img),img->depth, img->nChannels);
CvScalar white = cvScalar(255, 255, 255);
for(int i = 0; i < h; i++)
{
for(int j = 0; j < w; j++)
{
CvScalar s = cvGet2D(img, i, j);
if(s.val[2] < 60 && s.val[1] < 180 && s.val[0] > 100) //蓝色背景处理
//if(/*r*/s.val[2] > 100 && /*g*/ s.val[1] < 100 && /*b*/s.val[0] < 100) //红色背景处理,因为嘴唇等缘故,不好用
cvSet2D(newImg, i, j, white);
else
cvSet2D(newImg, i, j, s);
}
}
//cvShowImage("img", newImg);
//cvWaitKey(-1);
//cvDilate(newImg, newImg);
cvSaveImage("c:\\sss.jpg", newImg);
return 0;
}
红色的不好用。。。
额 应该做这样一个小工具,点一下,就可以替换所有像素值一样的点到 另一种像素值。
额。。。但是背景像素范围又很大。。。。
⊙﹏⊙b汗