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

学习OpenCV:滤镜系列(9)——扩散(毛玻璃)

2013-06-17 21:58 260 查看
==============================================

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

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

PhotoShop里的扩散,就相当于毛玻璃的感觉。

原理:用当前点四周一定范围内任意一点的颜色来替代当前点颜色,最常用的是随机的采用相邻点进行替代。

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

using namespace cv;
using namespace std;

int main()
{
Mat src = imread("D:/scene03.jpg",1);
int width=src.cols;
int heigh=src.rows;
RNG rng;
Mat img(src.size(),CV_8UC3);
for (int y=1; y<heigh-1; y++)
{
uchar* P0  = src.ptr<uchar>(y);
uchar* P1  = img.ptr<uchar>(y);
for (int x=1; x<width-1; x++)
{
int tmp=rng.uniform(0,9);
P1[3*x]=src.at<uchar>(y-1+tmp/3,3*(x-1+tmp%3));
P1[3*x+1]=src.at<uchar>(y-1+tmp/3,3*(x-1+tmp%3)+1);
P1[3*x+2]=src.at<uchar>(y-1+tmp/3,3*(x-1+tmp%3)+2);
}

}
imshow("扩散",img);
waitKey();
imwrite("D:/扩散.jpg",img);
}

原图:






扩散(毛玻璃):




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