标签:变换 one src nbsp add border 输入 lin prism
我喜欢《你的名字》这个故事,前一段时间在微信上使用过它的滤镜,实现的效果很惊艳,应该类似于下面的这些结果/************************************************************************/
/* 1.背景(天空)分割 */
/************************************************************************/
cvtColor(matSrc,temp,COLOR_BGR2HSV);
split(temp,planes);
equalizeHist(planes[2],planes[2]);//对v通道进行equalizeHist
merge(planes,temp);
inRange(temp,Scalar(100,43,46),Scalar(124,255,255),temp);
erode(temp,temp,Mat());//形态学变换,填补内部空洞
dilate(temp,temp,Mat());
imshow("原始图",matSrc);
cvtColor(temp,mask,COLOR_BGR2GRAY);//将结果存入mask
resize(matCloud,matCloud,matSrc.size());
matCloud.copyTo(matSrc,mask);
//seamless clone
Point center(matSrc.cols/2,matSrc.rows/2);
Mat normal_clone;
Mat mixed_clone;
Mat monochrome_clone;
seamlessClone(matCloud, matSrc, mask, center, normal_clone, NORMAL_CLONE);
seamlessClone(matCloud, matSrc, mask, center, mixed_clone, MIXED_CLONE);
seamlessClone(matCloud, matSrc, mask, center, monochrome_clone, MONOCHROME_TRANSFER);
//打印原始色卡
Mat matBoard = Mat(2048,1024,CV_8UC3,Scalar(0));
for (int b = 0; b < 128; b++)
{
for (int g = 0; g < 128; g++)
{
for (int r = 0; r < 128; r++)
{
int index = b * 128 * 128 + g * 128 + r;
int icols = index/1024;
int irows = index%1024;
matBoard.at<Vec3b>(icols,irows)[0] = b;
matBoard.at<Vec3b>(icols,irows)[1] = g;
matBoard.at<Vec3b>(icols,irows)[2] = r;
}
}
}
标签:变换 one src nbsp add border 输入 lin prism
原文地址:http://www.cnblogs.com/jsxyhelu/p/7216795.html