【原文:http://blog.csdn.net/yangtrees/article/details/9108053】
==============================================
版权所有:小熊不去实验室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);
- }
风: