濮阳杆衣贸易有限公司

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

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

熱門標(biāo)簽:萊蕪電信外呼系統(tǒng) 銀川電話機(jī)器人電話 高德地圖標(biāo)注收入咋樣 地圖標(biāo)注多個(gè) 企業(yè)微信地圖標(biāo)注 B52系統(tǒng)電梯外呼顯示E7 怎么辦理400客服電話 沈陽防封電銷電話卡 鶴壁手機(jī)自動(dòng)外呼系統(tǒng)違法嗎

實(shí)現(xiàn)原理

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

功能函數(shù)代碼

// 擴(kuò)散效果
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;
}
 
// 擴(kuò)散效果
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擴(kuò)散

圖3 11*11擴(kuò)散

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

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

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

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

標(biāo)簽:安慶 呼倫貝爾 湘西 葫蘆島 呼倫貝爾 烏魯木齊 銀川 三亞

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《OpenCV-PS擴(kuò)散毛玻璃效果的實(shí)現(xiàn)代碼》,本文關(guān)鍵詞  OpenCV-PS,擴(kuò)散,毛玻璃,效果,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《OpenCV-PS擴(kuò)散毛玻璃效果的實(shí)現(xiàn)代碼》相關(guān)的同類信息!
  • 本頁收集關(guān)于OpenCV-PS擴(kuò)散毛玻璃效果的實(shí)現(xiàn)代碼的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    礼泉县| 威海市| 平阳县| 桂东县| 正安县| 黔西县| 重庆市| 城口县| 海安县| 清苑县| 雷州市| 江西省| 赤城县| 镇雄县| 淳安县| 依兰县| 福州市| 贵德县| 台东县| 东港市| 通河县| 璧山县| 聂荣县| 亚东县| 五指山市| 临高县| 田阳县| 荆门市| 闸北区| 杭锦后旗| 财经| 霍林郭勒市| 瑞金市| 平南县| 临城县| 黔西县| 巴中市| 河南省| 陆川县| 从江县| 罗江县|