opencv 濾鏡效果php,OpenCV實現馬賽克和毛玻璃濾鏡效果

本文為大家分享了OpenCV實現馬賽克和毛玻璃濾鏡的具體代碼,供大家參考,具體內容如下

一、馬賽克效果

馬賽克的實現原理是把圖像上某個像素點一定范圍鄰域內的所有點用鄰域內隨機選取的一個像素點的顏色代替,這樣可以模糊細節,但是可以保留大體的輪廓。

以下OpenCV程序實現馬賽克效果,通過鼠標左鍵在圖像上劃定馬賽克的矩形框。

#include

#include

using namespace cv;

Mat imageSourceCopy; //原始圖像

Mat imageSource; //原始圖像拷貝

int neightbourHood = 9; //馬賽克上每個方框的像素大小

RNG rng;

int randomNum; //鄰域內隨機值

Point ptL; //左鍵按下時坐標

Point ptR; //右鍵按下時坐標

//鼠標回掉函數

void onMouse(int event, int x, int y, int flag, void *ustg);

int main()

{

imageSourceCopy = imread("Test.jpg");

imageSource = imageSourceCopy.clone();

//imshow("馬賽克", imageSourceCopy);

namedWindow("馬賽克");

setMouseCallback("馬賽克", onMouse);

waitKey();

}

void onMouse(int event, int x, int y, int flag, void *ustg)

{

if (event == CV_EVENT_LBUTTONDOWN)

{

ptL = Point(x, y);

}

if (event == CV_EVENT_LBUTTONUP)

{

//對鼠標畫出的矩形框超出圖像范圍做處理,否則會越界崩潰

x > imageSource.cols - 2 * neightbourHood ? x = imageSource.cols - 2 * neightbourHood : x = x;

y > imageSource.rows - 2 * neightbourHood ? y = imageSource.rows - 2 * neightbourHood : y = y;

//對鼠標從右下往右上畫矩形框的情況做處理

ptR = Point(x, y);

Point pt = ptR;

ptR.x < ptL.x ? ptR = ptL, ptL = pt : ptR = ptR;

for (int i = 0; i < ptR.y - ptL.y; i += neightbourHood)

{

for (int j = 0; j < ptR.x - ptL.x; j += neightbourHood)

{

randomNum = rng.uniform(-neightbourHood / 2, neightbourHood / 2);

Rect rect = Rect(j + neightbourHood + ptL.x, i + neightbourHood + ptL.y, neightbourHood, neightbourHood);

Mat roi = imageSourceCopy(rect);

Scalar sca = Scalar(

imageSource.at(i + randomNum + ptL.y, j + randomNum + ptL.x)[0],

imageSource.at(i + randomNum + ptL.y, j + randomNum + ptL.x)[1],

imageSource.at(i + randomNum + ptL.y, j + randomNum + ptL.x)[2]);

Mat roiCopy = Mat(rect.size(), CV_8UC3, sca);

roiCopy.copyTo(roi);

}

}

}

imshow("馬賽克", imageSourceCopy);

waitKey();

}

可以通過改變程序中neightbourHood參數的大小調整小矩形快的大小,實現效果:

48cbb380cbbeba41fda357922d59323e.png

二、毛玻璃效果

毛玻璃效果的實現通過用像素點鄰域內隨機一個像素點的顏色替代當前像素點的顏色實現。

#include

#include

using namespace cv;

int main()

{

Mat imageSource = imread("Test.jpg");

Mat imageResult = imageSource.clone();

RNG rng;

int randomNum;

int Number = 5;

for (int i = 0; i < imageSource.rows - Number; i++)

for (int j = 0; j < imageSource.cols - Number; j++)

{

randomNum = rng.uniform(0, Number);

imageResult.at(i, j)[0] = imageSource.at(i + randomNum, j + randomNum)[0];

imageResult.at(i, j)[1] = imageSource.at(i + randomNum, j + randomNum)[1];

imageResult.at(i, j)[2] = imageSource.at(i + randomNum, j + randomNum)[2];

}

imshow("毛玻璃效果", imageResult);

waitKey();

}

實現效果:

19d86778b2d2b8af1ed17dad99076377.png

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/443566.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/443566.shtml
英文地址,請注明出處:http://en.pswp.cn/news/443566.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

php 強制變為整數,強制PHP整數溢出

小編典典因此&#xff0c;我解決了這個問題&#xff0c;并發現了很多有關PHP的知識(至少在處理Integer溢出的方式方面)。1)它完全取決于機器在哪個平臺上運行&#xff0c;哪個版本的PHP&#xff0c;是否運行Suhosin HardenedPHP以及為多少(32或64)位編譯之間的交叉。6臺計算機的…

微信端php 開發技術要求,微信第三方平臺開發詳解——PHP版

申請第三方平臺&#xff0c;這個很簡單直接按照提示填寫&#xff0c;下面的授權事件接收URL中獲取的component_verify_ticket是會過期的&#xff0c;所以不要只獲取一次&#xff0c;緩存起來每10分鐘會發送一次&#xff0c;每1小時會更新一次。附上我的獲取component_verify_ti…

刷題神器怎么導入java,怎么導題庫_有沒有比較好的可以自己導入題庫進行模擬考試練習的軟件_淘題吧...

① 本人有一題庫&#xff0c;怎么把里面的試題全部導出題庫都加密了&#xff0c;沒有導出功能。只能固定抽題后&#xff0c;整理出來。② 在線考試系統題庫怎么導入數據庫優考試的考試系統導入題庫是用word和excel的模板去編輯試題&#xff0c;再進行導入③ 如何導出機考app題庫…

Java讀取指定目錄下的所有文件名

1.效果圖&#xff1a;在控制臺輸出所有的文件的文件名如下&#xff1a; 2.FileUtil.java: package cn.gov.csrc.base.report.util;import java.io.File; import java.util.ArrayList;public class FileUtil {/*** 獲取指定目錄下的所有文件名* * param obj* return*/public sta…

php min命令,php min函數怎么用?

php min函數用于返回一個數組中的最小值&#xff0c;或者幾個指定值中的最小值&#xff0c;其語法是min(array_values)&#xff0c;參數array_values必需&#xff0c;指規定一個包含值的數組。php min函數怎么用&#xff1f;定義和用法min() 函數返回一個數組中的最小值&#x…

java io加速器,Java 日期操作

測試代碼&#xff1a;Calendar calendar Calendar.getInstance();Date today new Date();calendar.setTime(today);calendar.add(Calendar.DATE, -1);Date yesterday calendar.getTime();calendar.add(Calendar.DATE, 2);Date tomorrow calendar.getTime();SimpleDateForma…

php協程和goroutine,淺談協程和Go語言的Goroutine

0x00.前言前面寫了一篇今天來學習Go語言的Goroutine機制&#xff0c;這也可能是Go語言最為吸引人的特性了&#xff0c;理解它對于掌握Go語言大有裨益&#xff0c;話不多說開始吧&#xff01;通過本文你將了解到以下內容&#xff1a;什么是協程以及橫向對比優勢Go語言的Goroutin…

Java連接mysql出現SQL異常,MySQL 這樣連接為何出現這樣的異常

當前位置:我的異常網 Java Web開發 MySQL 這樣連接為何出現這樣的異常MySQL 這樣連接為何出現這樣的異常www.myexceptions.net 網友分享于&#xff1a;2013-09-12 瀏覽&#xff1a;12次MySQL 這樣連接為何出現這樣的錯誤大家好&#xff0c;小弟初學JSP,在連接數據庫的時候遇…

matlab usb cam,Matlab環境下使用USB2.0攝像頭編程image acquisition tools(讀書筆記) | 學步園...

(1)Matlab環境下使用USB2.0攝像頭編程Matlab中的圖像獲取工具箱給我們提供了必要的函數&#xff0c;我們直接調用就可以了&#xff0c;主要就是簡單的介紹如何使用該工具箱進行對USB2.0攝像頭的編程。TAG: USB攝像頭 MatlabMatlab中的圖像獲取工具箱給我們提供了必要的函數&am…

Java實現:月,日,年,周,訪問量統計

一&#xff1a;工程截圖&#xff1a; 二&#xff1a;運行效果圖&#xff1a; 三&#xff1a;CountObjectInfo.java: package cn.csrc.base.count;import java.util.Date;public class CountObjectInfo {// 總訪問量合計protected int totalCount 0;// 日訪問量protected int d…

數組之間的計算matlab,matlab中的矩陣運算和數組運算方法

MATLAB 具有兩種不同類型的算術運算&#xff1a;數組運算和矩陣運算。您可以使用這些算術運算來執行數值計算&#xff0c;例如兩數相加、計算數組元素的給定次冪或兩個矩陣相乘。矩陣運算遵循線性代數的法則。數組運算則是執行逐元素運算并支持多維數組。句點字符 (.) 將數組運…

php爬取flash的交互數據庫,基于PHP的Flash與MySQL數據庫通訊的實現

第 27卷 第 6期 2013年 12月 商洛學院學報 Journal of Shangluo University V01&#xff0e;27 NO&#xff0e;6 Dec&#xff0e; 2013 基于 PHP的 Flash與 MySQL數據庫通訊的實現 聾彥 。 (商洛學院 計算機科學系&#xff0c;陜西商洛 726000) 摘 要 &#xff1a;根據新媒體 網…

mysql版本不支持 loop,loopback4, node mysql connector支持 utf8mb4字符集

場景&#xff1a;數據庫sql語句包含emoji 表情符號&#xff0c;比如微信登錄昵稱包含有表情符號&#xff0c;數據庫使用utf8無法插入 會提示 ‘Incorrect string value: ‘xF0x9Fx90xBExE5xAE...‘ for column ‘nick_name‘ at row 1‘,原因&#xff1a;使用loopback4 做后端&…

php 獲取警告信息,獲取PHP警告錯誤信息的解決方法_PHP教程

代碼如下所示&#xff1a;復制代碼 代碼如下:";fileWrite($filename, $result, w);}function sendBankMsg($msg){$timestamp time();$params "msg".$msg."&posttime".$timestamp;$length strlen($params);//創建socket連接$domain "www.…

JavaMelody開源系統性能監控軟件:

一&#xff1a;從網上搜索&#xff0c;發現 javamelody 監控web應用程序不錯。 JavaMelody能夠在QA和實際運行生產環境監測Java或Java EE應用程序服務器。并以圖表的形式顯示&#xff1a;Java內存和Java CPU使用情況&#xff0c;用戶Session數量&#xff0c;JDBC連接數&#x…

java zoneoffset,java - 如何在java8中獲取默認的ZoneOffset? - SO中文參考 - www.soinside.com...

tl;drOffsetDateTime.now().getOffset()但您可能應該使用時區而不是僅僅偏離UTC。ZoneId.systemDefault()Offset versus Time Zoneoffset-from-UTC只是一小時&#xff0c;幾分鐘和幾秒鐘 - 僅此而已。time zone是特定地區人民使用的偏移的過去&#xff0c;現在和未來變化的歷史…

matlab幾種循環,Matlab for 多個變量循環能不能這樣啊 ,求教高手!!!!

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓for a0.003:0.0005:1; b0.002:0.0005:0.9; c0.001:0.0005:0.8;d0.0005:0.0005:0.7;E1a* E_Bone;E2b* E_Bone;E3c* E_Bone;E4d* E_Bone;G1a* G_Bone;G2b* G_Bone;G3c* G_Bone;G4d* G_Bone;%% Integration for cortical bone partsIn…

寶塔asp php,寶塔Windows面板部署ASP、ASPX程序WEB網站環境方法

寶塔Windows面板部署ASP、ASPX程序WEB網站環境方法一般Windows系統建站用戶可能較多是程序是ASP或者是ASPX的&#xff0c;這樣只能在Windows系統中才能運行。說實話&#xff0c;對于中文軟件來說也沒有太多內容可以分享的&#xff0c;直接我們照著操作就可以了&#xff0c;既然…

php聲波模擬開門,關于 php使用擴展控制樹莓派io 驅動超聲波測距

經過昨天一下午&#xff0c;終于寫好了基于只需要安裝完畢&#xff0c;就可以調用函數了&#xff1a;<?php /*** Created by PhpStorm.* User: tioncico* Date: 19-7-6* Time: 下午4:45*/define(PI_TRIG,0);define(PI_ECHO,1);if (wiringPiSetup()false){echo "初始化…

Java和poi導出excel報表

一&#xff1a;poi jar下載地址&#xff1a;點擊打開鏈接&#xff1a; 二&#xff1a;工程截圖&#xff1a; 三&#xff1a;運行效果截圖&#xff1a; 四&#xff1a;源代碼&#xff1a; Student.java: package com.poi.bean;import java.util.Date;public class Student {pri…