中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

OpenCV如何實現PS擴散毛玻璃效果

發布時間:2021-09-02 13:52:06 來源:億速云 閱讀:128 作者:小新 欄目:開發技術

這篇文章給大家分享的是有關OpenCV如何實現PS擴散毛玻璃效果的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。

實現原理

PS的擴散效果可以產生類似毛玻璃質感的效果,使畫面有些毛毛的感覺。其實現可通過操作像素三通道數值的方式實現,定義一個隨機數器,將圖像中任一點的數值賦值為,以該點為中心一定尺寸窗口(如3*3,5*5)內隨機一個點的數值。

功能函數代碼

// 擴散效果
cv::Mat Diffusion(cv::Mat src,int size)
{
	int row = src.rows;
	int col = src.cols;
	RNG rng;
	cv::Mat result = src.clone();
	for (int i = size; i < row- size; ++i)
	{
		uchar* t = result.ptr<uchar>(i);
		for (int j = size; j < col- size; ++j)
		{
			int tmp = rng.uniform(0, 2*size+1);
			t[3 * j] = src.at<uchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)));
			t[3 * j + 1] = src.at<uchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)) + 1);
			t[3 * j + 2] = src.at<uchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)) + 2);
		}
	}
	return result;
}

C++測試代碼

#include <iostream>
#include <string>
#include <opencv2/opencv.hpp>
 
using namespace std;
using namespace cv;
 
cv::Mat Diffusion(cv::Mat src, int size);
 
int main()
{
	cv::Mat src = imread("test.jpg");
	int size = 5;
	cv::Mat result = Diffusion(src,size);
	cv::imshow("original", src);
	cv::imshow("result", result);
	waitKey(0);
	return 0;
}
 
// 擴散效果
cv::Mat Diffusion(cv::Mat src,int size)
{
	int row = src.rows;
	int col = src.cols;
	RNG rng;
	cv::Mat result = src.clone();
	for (int i = size; i < row- size; ++i)
	{
		uchar* t = result.ptr<uchar>(i);
		for (int j = size; j < col- size; ++j)
		{
			int tmp = rng.uniform(0, 2*size+1);
			t[3 * j] = src.at<uchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)));
			t[3 * j + 1] = src.at<uchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)) + 1);
			t[3 * j + 2] = src.at<uchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)) + 2);
		}
	}
	return result;
}

測試效果

OpenCV如何實現PS擴散毛玻璃效果

圖1 原圖

OpenCV如何實現PS擴散毛玻璃效果

圖2 5*5擴散

OpenCV如何實現PS擴散毛玻璃效果

圖3 11*11擴散

適當地調整size,可以改變擴散的強度,進而帶來不一樣的質感。

感謝各位的閱讀!關于“OpenCV如何實現PS擴散毛玻璃效果”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

洪泽县| 邹城市| 读书| 赤城县| 盖州市| 城市| 仁怀市| 章丘市| 建德市| 巴楚县| 衡阳县| 泾源县| 九江县| 秭归县| 威远县| 怀柔区| 新建县| 玉门市| 临西县| 大同县| 宁国市| 江陵县| 长寿区| 北流市| 平江县| 胶南市| 黎城县| 辛集市| 民勤县| 武隆县| 沭阳县| 建昌县| 嘉义市| 清远市| 山西省| 名山县| 吉安市| 佛坪县| 稻城县| 沅陵县| 高台县|