学习OpenCV:滤镜系列(6)——风
2013-06-16 20:59
302 查看
==============================================
版权所有:小熊不去实验室CSDN博客
==============================================
原图:
风:
版权所有:小熊不去实验室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); }
原图:
风:
相关文章推荐
- 学习OpenCV:滤镜系列(14)——载入选区
- 学习OpenCV:滤镜系列(7)——漩涡
- 学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
- 学习OpenCV:滤镜系列(15)——羽化(模糊边缘)
- 学习OpenCV:滤镜系列(9)——扩散(毛玻璃)
- 学习OpenCV:滤镜系列(11)——高反差保留 (6.30修改版)
- 学习OpenCV:滤镜系列(12)——计算模式(强光)
- 学习OpenCV:滤镜系列(1)—— 雕刻&浮雕
- 学习OpenCV:滤镜系列(2)——扩张&挤压
- 学习OpenCV:滤镜系列(4)——波浪:正弦
- 学习OpenCV:滤镜系列(10)——怀旧色 & 连环画 & 熔铸 & 冰冻
- 学习OpenCV:滤镜系列(13)——计算模式算法集合
- 学习OpenCV:滤镜系列(5)——径向模糊:缩放&旋转
- 学习OpenCV:滤镜系列(3)——颜色变幻
- 高反差保留滤镜学习OpenCV:滤镜系列(11)——高反差保留
- 学习OpenCV:滤镜系列(6)——风
- 学习OpenCV:滤镜系列(7)——漩涡
- 学习OpenCV:滤镜系列(14)——载入选区
- 学习OpenCV:滤镜系列(8)——素描
- 学习OpenCV:滤镜系列(2)——扩张&挤压