OpenCV_6风

一,原图:

二,代码:

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

void Wind()
{
	Mat src = imread("D:\\test\\26.png");
	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<num0; i++)		//	num:风线密度
			{
				int newX = rng.uniform(i*width / num0, (i + 1)*width / num0);
				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);
}

//-----开始------
void COpenCVLearningDlg::OnBnClickedStartButton()
{
	Wind();
}

三,结果:

欢迎扫码关注我的微信公众号

原文地址:https://blog.csdn.net/sangni007/column/info/stylizefliter

猜你喜欢

转载自blog.csdn.net/sxlsxl119/article/details/84863788