http://blog.csdn.net/kezunhai
剪纸是中国古代乃至今日的传统艺术,它的团简单,色调单调,多以红色为主。针对传统剪纸艺术,可以通过Photoshop来为其重新着色,重塑剪纸艺术。
剪纸效果的原理很简单,首先将彩色图像转换为黑白图像,然后对黑白图像进行着色即可。在前面的系列位置中有对图像进行灰度化处理,见:PhotoShop算法实现--图像灰度化处理(六),及伪彩色编码(着色),见:PhotoShop算法实现--伪彩色图像处理(八)。下面的算法实现剪纸效果:
// bgColor:背景色
// bgColor:前景色
void PhotoShop::PaperCut(Mat& img, Mat& dst, Scalar bgColor, Scalar fgColor)
{
Mat temp;
Gray(img, temp, AVERAGE); // 灰度化
Scalar _sMean = mean(temp); // 求灰度均值
double dmean = _sMean.val[0];
int height = img.rows;
int width = img.cols;
int chns = img.channels();
if ( dst.empty())
dst.create( height, width, img.type());
int i, j, k;
for ( i=0; i<height; i++)
{
unsigned char* tempData = (unsigned char*)temp.data + temp.step*i;
unsigned char* dstData = (unsigned char*)dst.data + dst.step*i;
for ( j=0; j<width; j++)
{
if ( tempData[j*chns]> dmean) // 前景
{
dstData[j*chns] = bgColor.val[0];
dstData[j*chns+1] = bgColor.val[1];
dstData[j*chns+2] = bgColor.val[2];
}
else
{
dstData[j*chns] = fgColor.val[0];
dstData[j*chns+1] = fgColor.val[1];
dstData[j*chns+2] = fgColor.val[2];
}
}
}
}
对于中国龙,多以黄色为主,下面这将红龙变黄龙:
红猪变黄猪:
通过修改函数中的bgColor和fgColor可以自由改变剪纸的颜色,使其产生不同的视觉效果;对于剪纸艺术来说,通过剪出一种颜色,就可以自由搭配各种颜色,可以充分发展和传扬剪纸艺术。
作者:kezunhai 出处:http://blog.csdn.net/kezunhai 欢迎转载或分享,但请务必声明文章出处。