OpenCV
改變圖像的大小
需要注意的是dsize與fx和fy必須不能同時為零,也就是說要么dsize不為零而fx與fy同時可以為0,要么dsize為0而fx與fy不同時為0;resize函數的目標大小可以是任意的大小,可以不保持長寬比率。
void resize( InputArray src, OutputArray dst,
Size dsize, double fx = 0, double fy = 0,
int interpolation = INTER_LINEAR );
高斯模糊
void GaussianBlur( InputArray src, OutputArray dst, Size ksize,
double sigmaX, double sigmaY = 0,
int borderType = BORDER_DEFAULT );
src
:輸入圖像,即源圖像,填Mat類的對象即可。它可以是單獨的任意通道數的圖片,但需要注意,圖片深度應該為CV_8U,CV_16U,*** CV_16S, CV_32F 以及 CV_64F之一。
dst
:即目標圖像,需要和源圖片有一樣的尺寸和類型。比如可以用Mat::Clone,以源圖片為模板,來初始化得到目標圖。
ksize
:高斯內核的大小。其中ksize.width和ksize.height可以不同,但他們都必須為正數和奇數(并不能理解)?;蛘撸鼈兛梢允橇愕模鼈兌际怯蓅igma計算而來。
sigmaX
:表示高斯核函數在X方向的的標準偏差。
sigmaY
:表示高斯核函數在Y方向的的標準偏差。若sigmaY為零,就將它設為sigmaX,如果sigmaX和sigmaY都是0,那么就由ksize.width和ksize.height計算出來。
為了結果的正確性著想,最好是把第三個參數Size,第四個參數sigmaX和第五個參數sigmaY全部指定到。
borderType
:用于推斷圖像外部像素的某種邊界模式。注意它有默認值BORDER_DEFAULT***。
從輸入中拷貝某通道到輸出的通道中
void mixChannels(const Mat* src, size_t nsrcs, Mat* dst, size_t ndsts,
const int* fromTo, size_t npairs);
提取目標輪廓
void findContours(InputOutputArray image, OutputArrayOfArrays contours,
OutputArray hierarchy, int mode,
int method, Point offset = Point());
對提取的多邊形輪廓進行多邊形擬合
void approxPolyDP( InputArray curve,
OutputArray approxCurve,
double epsilon, bool closed );
InputArray curve
:一般是由圖像的輪廓點組成的點集
OutputArray approxCurve
:表示輸出的多邊形點集
double epsilon
:主要表示輸出的精度,就是兩個個輪廓點之間最大距離數
bool closed
:表示輸出的多邊形是否封閉