您的位置:首页 > 运维架构

学习OpenCV:滤镜系列(6)——风

2013-06-16 20:59 302 查看
==============================================

版权所有:小熊不去实验室CSDN博客

==============================================

#include <opencv/cv.h>
#include <opencv/highgui.h>

using namespace cv;
using namespace std;

int num=10;//	num:风线密度
int num1=20;//	num1:风线长度

int main()
{
Mat src = imread("D:/test3.jpg",1);
Mat src1u[3];
split(src,src1u);

int width=src.cols;
int heigh=src.rows;
Mat img;
src.copyTo(img);

Point center(width/2,heigh/2);

RNG rng;

for (int y=0; y<heigh; y++)
{

uchar *imgP  = img.ptr<uchar>(y);

//		for (int x=0; x<width; x++)
{

for (int i=0;i<num;i++)		//	num:风线密度
{
int newX=rng.uniform(i*width/num,(i+1)*width/num);
int newY = y;

if(newX<0)newX=0;
if(newX>width-1)newX=width-1;

uchar tmp0 = src1u[0].at<uchar>(newY,newX);
uchar tmp1 = src1u[1].at<uchar>(newY,newX);
uchar tmp2 = src1u[2].at<uchar>(newY,newX);

for (int j=0; j<num1; j++)	//num1:风线长度
{
int tmpX=newX-j;//减:风向左;加:风向右

if(tmpX<0)tmpX=0;
if(tmpX>width-1)tmpX=width-1;

imgP[tmpX*3]=tmp0;
imgP[tmpX*3+1]=tmp1;
imgP[tmpX*3+2]=tmp2;
}
}

}

}
imshow("径向模糊",img);
waitKey();
imwrite("D:/风.jpg",img);
}


原图:








风:





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: