OpenCV入門:平滑處理 — 高斯模糊
阿新 • • 發佈:2018-12-25
平滑處理 — 高斯模糊
相關函式:
C++: void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT)
引數解析:
- src – 輸入圖片,可以使是任意通道數,該函式對通道是獨立處理的,但是深度只能是CV_8U, CV_16U, CV_16S, CV_32F
- dst – 輸出圖片,和輸入圖片相同大小和深度。
- ksize – 高斯核心大小。ksize.width和ksize.height允許不相同但他們必須是正奇數。或者等於0,由引數sigma的乘機決定。
- sigmaX – 高斯核心在X方向的標準偏差。
- sigmaY – 高斯核心在Y方向的標準偏差。如果sigmaY為0,他將和sigmaX的值相同,如果他們都為0,那麼他們由ksize.width和ksize.height計算得出。
- borderType – 用於判斷影象邊界的模式。
- 為了結果的正確性著想,最好是把第三個引數Size,第四個引數sigmaX和第五個引數sigmaY全部指定到。
相關例項:
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include"opencv2/imgproc/imgproc.hpp" #include <stdio.h> using namespace cv; /* 高斯模糊:void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT) src – 輸入圖片,可以使是任意通道數,該函式對通道是獨立處理的,但是深度只能是CV_8U, CV_16U, CV_16S, CV_32F or CV_64F. dst – 輸出圖片,和輸入圖片相同大小和深度。 ksize – 高斯核心大小。ksize.width和ksize.height允許不相同但他們必須是正奇數。或者等於0,由引數sigma的乘機決定。 sigmaX – 高斯核心在X方向的標準偏差。 sigmaY – 高斯核心在Y方向的標準偏差。如果sigmaY為0,他將和sigmaX的值相同,如果他們都為0,那麼他們由ksize.width和ksize.height計算得出。 borderType – 用於判斷影象邊界的模式。 *為了結果的正確性著想,最好是把第三個引數Size,第四個引數sigmaX和第五個引數sigmaY全部指定到。 **/ int main() { cvNamedWindow("高斯模糊原圖", 0); cvNamedWindow("高斯模糊效果圖",0); Mat imageSrc = imread("game.jpg"); imshow("高斯模糊原圖", imageSrc); Mat imageChange; //高斯模糊處理 GaussianBlur(imageSrc, imageChange, Size(7, 7), 0, 0); //顯示效果圖 imshow("高斯模糊效果圖", imageChange); waitKey(6000 * 100); }
效果圖: