佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > OpenCV-PS擴散毛玻璃效果的實現(xiàn)代碼

OpenCV-PS擴散毛玻璃效果的實現(xiàn)代碼

熱門標簽:美圖手機 網(wǎng)站文章發(fā)布 檢查注冊表項 服務(wù)器配置 呼叫中心市場需求 智能手機 銀行業(yè)務(wù) 鐵路電話系統(tǒng)

實現(xiàn)原理

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

功能函數(shù)代碼

// 擴散效果
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.ptruchar>(i);
		for (int j = size; j  col- size; ++j)
		{
			int tmp = rng.uniform(0, 2*size+1);
			t[3 * j] = src.atuchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)));
			t[3 * j + 1] = src.atuchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)) + 1);
			t[3 * j + 2] = src.atuchar>(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.ptruchar>(i);
		for (int j = size; j  col- size; ++j)
		{
			int tmp = rng.uniform(0, 2*size+1);
			t[3 * j] = src.atuchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)));
			t[3 * j + 1] = src.atuchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)) + 1);
			t[3 * j + 2] = src.atuchar>(i - size + tmp / (2 * size + 1), 3 * (j - size + tmp % (2 * size + 1)) + 2);
		}
	}
	return result;
}

測試效果

圖1 原圖

圖2 5*5擴散

圖3 11*11擴散

適當(dāng)?shù)卣{(diào)整size,可以改變擴散的強度,進而帶來不一樣的質(zhì)感。

如果函數(shù)有什么可以改進完善的地方,非常歡迎大家指出,一同進步何樂而不為呢~

到此這篇關(guān)于OpenCV-PS擴散毛玻璃效果的文章就介紹到這了,更多相關(guān)OpenCV毛玻璃內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • OpenCV實現(xiàn)馬賽克和毛玻璃濾鏡效果
  • 詳解opencv中畫圓circle函數(shù)和橢圓ellipse函數(shù)
  • 使用python-opencv讀取視頻,計算視頻總幀數(shù)及FPS的實現(xiàn)
  • Eclipse下基于Java的OpenCV開發(fā)環(huán)境配置教程

標簽:沈陽 紅河 樂山 新疆 長治 上海 滄州 河南

巨人網(wǎng)絡(luò)通訊聲明:本文標題《OpenCV-PS擴散毛玻璃效果的實現(xiàn)代碼》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    石阡县| 读书| 紫阳县| 天峻县| 枣强县| 巴南区| 大余县| 武功县| 湘阴县| 崇信县| 麻栗坡县| 抚远县| 萍乡市| 屯昌县| 榆林市| 石嘴山市| 鄂托克前旗| 清流县| 盘锦市| 嵊泗县| 宜黄县| 如皋市| 股票| 称多县| 泸水县| 阳西县| 固始县| 台南市| 高安市| 玉田县| 镇康县| 巴彦淖尔市| 定西市| 石景山区| 安阳县| 礼泉县| 沁源县| 天长市| 郯城县| 益阳市| 罗定市|