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

【原文:http://blog.csdn.net/yangtrees/article/details/9108053

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

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

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


  1. #include <opencv/cv.h>  
  2. #include <opencv/highgui.h>  
  3.   
  4. using namespace cv;  
  5. using namespace std;  
  6.   
  7. int num=10;//   num:风线密度  
  8. int num1=20;//  num1:风线长度  
  9.   
  10. int main()  
  11. {  
  12.     Mat src = imread("D:/test3.jpg",1);  
  13.     Mat src1u[3];  
  14.     split(src,src1u);  
  15.   
  16.     int width=src.cols;  
  17.     int heigh=src.rows;  
  18.     Mat img;  
  19.     src.copyTo(img);  
  20.   
  21.     Point center(width/2,heigh/2);  
  22.   
  23.     RNG rng;  
  24.   
  25.     for (int y=0; y<heigh; y++)  
  26.     {  
  27.   
  28.         uchar *imgP  = img.ptr<uchar>(y);  
  29.   
  30. //      for (int x=0; x<width; x++)  
  31.         {  
  32.   
  33.             for (int i=0;i<num;i++)      //  num:风线密度  
  34.             {  
  35.                 int newX=rng.uniform(i*width/num,(i+1)*width/num);  
  36.                 int newY = y;  
  37.   
  38.                 if(newX<0)newX=0;  
  39.                 if(newX>width-1)newX=width-1;  
  40.   
  41.                 uchar tmp0 = src1u[0].at<uchar>(newY,newX);  
  42.                 uchar tmp1 = src1u[1].at<uchar>(newY,newX);  
  43.                 uchar tmp2 = src1u[2].at<uchar>(newY,newX);  
  44.   
  45.                 for (int j=0; j<num1; j++)   //num1:风线长度  
  46.                 {  
  47.                     int tmpX=newX-j;//减:风向左;加:风向右  
  48.   
  49.                     if(tmpX<0)tmpX=0;  
  50.                     if(tmpX>width-1)tmpX=width-1;  
  51.                       
  52.                     imgP[tmpX*3]=tmp0;  
  53.                     imgP[tmpX*3+1]=tmp1;  
  54.                     imgP[tmpX*3+2]=tmp2;  
  55.                 }  
  56.             }  
  57.   
  58.         }  
  59.   
  60.     }  
  61.     imshow("径向模糊",img);  
  62.     waitKey();  
  63.     imwrite("D:/风.jpg",img);  
  64. }  


原图:



风:


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值