使用OpenCV進行圖片模糊處理(中值濾波)
本篇部落格主要介紹如何使用OpenCV自帶的中值濾波器來對圖片進行處理,達到模糊圖片的效果。在程式碼中通過使用一個TrackerBar動態改變。具體的還是根據程式碼來進行解釋吧!
先看一下效果圖:
通過效果圖可以很清楚的感受到隨著trackerBar的不斷滑動,圖片的模糊程度也在不斷的發生改變,不過相比起來,歸一化濾波、高斯濾波和中值濾波這三種方式各有各自的特點,有興趣的朋友可以自己上網搜尋一下,在這裡就不多說了!!!
看一下原始碼:
#include <iostream>
#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
const char* source_window = "source";
int initial_size = 1;
Mat source, result;
void onSizeChange(int position) {
cout << " , initial_size = " << initial_size << endl;
if (position == 0) {
position = 1;
}
if (position%2 == 0) {
position = position + 1 ;
}
initial_size = position;
try {
medianBlur(source, result, initial_size);
imshow(source_window, result);
}
catch (Exception e) {
std::cout << "Exception message = " << e.msg << std::endl;
}
}
int main()
{
source = imread("tw.jpg" , IMREAD_UNCHANGED);
result.create(source.rows, source.cols, source.type());
cvNamedWindow(source_window, CV_WINDOW_AUTOSIZE);
cvCreateTrackbar("changeSize", source_window, &initial_size, 100, onSizeChange);
cvSetTrackbarPos("changeSize", source_window,2);
waitKey(0);
cvDestroyAllWindows();
return 0;
}
進行模糊處理最核心的函式就是:medianBlur(source, result, initial_size),看一下這個函式的api介紹:
/** @brief Blurs an image using the median filter.
The function smoothes an image using the median filter with the \f$\texttt{ksize} \times
\texttt{ksize}\f$ aperture. Each channel of a multi-channel image is processed independently.
In-place operation is supported.
@note The median filter uses BORDER_REPLICATE internally to cope with border pixels, see cv::BorderTypes
@param src input 1-, 3-, or 4-channel image; when ksize is 3 or 5, the image depth should be
CV_8U, CV_16U, or CV_32F, for larger aperture sizes, it can only be CV_8U.
@param dst destination array of the same size and type as src.
@param ksize aperture linear size; it must be odd and greater than 1, for example: 3, 5, 7 ...
@sa bilateralFilter, blur, boxFilter, GaussianBlur
*/
CV_EXPORTS_W void medianBlur( InputArray src, OutputArray dst, int ksize );
src代表輸入影象,dst代表輸出影象,ksize代表著核心尺寸,由於是中值濾波,所有ksize的大小必須為奇數,這也是我在程式中對trackerbar的值進行判斷的原因。
中值濾波的實現原理:中值濾波將影象的每個畫素用鄰域 (以當前畫素為中心的正方形區域)畫素的 中值 代替 。
好了,函式的註解也已經提供了,不知道我理解的對不對,如果有什麼不正確的地方還請大神指正,我早點改正,不勝感激!!!有興趣的朋友可以以關注我,遇到問題大家一起討論一下!!
這是我的微信公眾號,如果可以的話,希望您可以幫忙關注一下,這將是對我最大的鼓勵了,謝謝!!
相關推薦
使用OpenCV進行圖片模糊處理(中值濾波)
本篇部落格主要介紹如何使用OpenCV自帶的中值濾波器來對圖片進行處理,達到模糊圖片的效果。在程式碼中通過使用一個TrackerBar動態改變。具體的還是根據程式碼來進行解釋吧! 先看一下效果圖: 通過效果圖可以很清楚的感受到隨著trackerBar的不
使用OpenCV進行圖片模糊處理(歸一化濾波器)
本篇部落格主要介紹如何使用OpenCV自帶的歸一化濾波器來對圖片進行處理,達到模糊圖片的效果。在程式碼中通過使用一個TrackerBar動態改變。具體的還是根據程式碼來進行解釋吧: 先看一下效果圖: gif效果圖雖然不清晰,但是可以很明顯的通過拖動Tra
Python OpenCV _4初級濾波(均值濾波,高斯濾波,中值濾波)
Python OpenCV這個初級影象處理系列是參考他人的文章寫的,有些地方做了一些改動,沒有太多理論,側重程式碼實現,主要目的是將這些基本操作程式碼系統地梳理一遍,也是為了以後能快速查詢。 理論就不說了,直接上程式碼和效果圖 原圖 一,均值濾波 程式碼:
基於MATLAB影象處理的中值濾波、均值濾波以及高斯濾波的實現與對比
基於MATLAB影象處理的中值濾波、均值濾波以及高斯濾波的實現與對比 作者:lee神 1.背景知識 中值濾波法是一種非線性平滑技術,它將每一畫素點的灰度值設定為該點某鄰域視窗內的所有畫素點灰度值的中值. 中值濾波是基於排序統計理論的一種能有效抑制噪聲的非線性訊號處
OpenCV在字符提取中進行的預處理(轉)
的人 lease pos extract .net avg 圖像 rar 識別 OCR簡介熟悉OCR的人都了解,OCR大致分為兩個部分: -文字提取text extractor -文字識別text recognition 其中,第一部分是屬於圖像處理部分,涉及到圖像分割的知
【數字影象處理】線性濾波、最大值濾波,最小值濾波、中值濾波、高頻補償濾波(vs2017+openCV)
一、實驗原理 1、線性濾波 ① 不管是低通線性濾波還是高通線性濾波原理都是一樣的,用圖一所示的濾波器模板進行加權處理,將最終得到的R值賦給w5對應的畫素。 ②低通線性濾波和高通線性濾波不同之處就在於: 低通線性濾波w1+w2+…+w9 = 1,且w1~w9全
【Python+OpenCV】圖片區域性區域畫素值處理(改進版)-一種特徵提取方法
上一個版本看這裡:《Python+OpenCV實現【圖片】區域性區域畫素值處理》 上個版本的程式碼雖然實現了我需要的功能,但還是走了很多彎路,我意識到圖片本就是陣列形式,對於8位灰度圖,通道數為1,它
【影象處理】影象濾波去噪聲——均值濾波、中值濾波、對稱均值濾波 低通濾波 高通濾波(opencv)
①觀察灰度分佈來描述一幅影象成為空間域,觀察影象變化的頻率被成為頻域。 ②頻域分析:低頻對應區域的影象強度變化緩慢,高頻對應的變化快。低通濾波器去除了影象的高頻部分,高通濾波器去除了影象的低頻部分。 (1)低通濾波 ①栗子: #include <iostream> #include &l
opencv 圖片基本處理(灰度化,反色,二值化,膨脹腐蝕以及ROI的copy等)
基於護照的識別和特徵提取,使用opencv2.4.9在VS2012裡做的。直接上程式碼: #include <cv.h> #include <highgui.h> #include <string> using namespace cv;
OpenCV計算機視覺學習(4)——影象平滑處理(均值濾波,高斯濾波,中值濾波,雙邊濾波)
如果需要處理的原圖及程式碼,請移步小編的GitHub地址 傳送門:請點選我 如果點選有誤:https://github.com/LeBron-Jian/ComputerVisionPractice “平滑處理”(smoothing)也稱“模糊處理”(bluring),是一項簡單且使用頻率很高的影象
基於Opencv的自適應中值濾波函數selfAdaptiveMedianBlur()
blog com begin clas logs opencv2 cal return mat 終於搞出來了:) #include <iostream> #include <opencv2/opencv.hpp> #include &l
opencv3 圖片模糊操作-均值濾波 高斯濾波 中值濾波 雙邊濾波
empty size mage point ima could not key image ace #include <iostream>#include <opencv2/opencv.hpp> using namespace std;using
android影象處理系列之五--給圖片新增邊框(中)
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
OpenCV圖片模糊處理
程式碼位置:16-ImageBlur.py import cv2 img = cv2.imread('./res/mini.jpeg') cv2.imshow('org', img) kernelsizes = [(3,3), (9,9), (15, 15)] for kernel
一起學opencv-python十(給影象加噪聲,模糊處理和影象銳化)
參考了https://www.bilibili.com/video/av24998616/?p=9 https://www.bilibili.com/video/av24998616/?p=10和 https://opencv-python-tutroals.readth
matlab中的中值濾波medfilt2()和opencv中的中值濾波medianblur()是不同的
matlab中的中值濾波medfilt2()和opencv中的中值濾波medianblur()做出的結果不同,如圖所示: Opencv處理結果如下: Matlab處理結果如下: Opencv處理過程中的程式程式碼: float aa[] = { 1, 2, 3, 4, 5, 6, 7,
OpenCV入門:平滑處理 — 中值濾波
平滑處理 — 中值濾波 相關函式: C++: void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=
OpenCV學習筆記之針對二值影象的邊緣光滑處理(突出部消除)
處理程式碼分為兩部分,第一部分用於去除邊緣的突出部,第二部分用於邊緣光滑。具體如下所示 1.去除邊緣突出部 //去除二值影象邊緣的突出部 //uthreshold、vthreshold分別表示突出部的寬度閾值和高度閾值 //type代表突出部的顏色,0表示黑色,1代表白色
機器學習(一):用sklearn進行資料預處理:缺失值處理、資料標準化、歸一化
在我們平時進行資料資料探勘建模時,一般首先得對資料進行預處理,其中就包括資料缺失值、異常值處理、資料的標準化、歸一化等等。 下面主要介紹如何對一個數據檔案進行資料的缺失值處理、標準化和歸一化 MID_SP MID_AC MID_R25 MID_COND LITHO1 55.
10. 對一幅灰度影象進行均值濾波、中值濾波。(自己可適當對原影象增加高頻噪聲)
#include <iostream> #include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc