改變圖像的大小
需要注意的是dsize與fx和fy必須不能同時(shí)為零镰踏,也就是說(shuō)要么dsize不為零而fx與fy同時(shí)可以為0谒府,要么dsize為0而fx與fy不同時(shí)為0;resize函數(shù)的目標(biāo)大小可以是任意的大小珊肃,可以不保持長(zhǎng)寬比率纽什。
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類的對(duì)象即可谤辜。它可以是單獨(dú)的任意通道數(shù)的圖片,但需要注意价捧,圖片深度應(yīng)該為CV_8U,CV_16U,*** CV_16S, CV_32F 以及 CV_64F之一丑念。
dst
:即目標(biāo)圖像,需要和源圖片有一樣的尺寸和類型结蟋。比如可以用Mat::Clone脯倚,以源圖片為模板,來(lái)初始化得到目標(biāo)圖嵌屎。
ksize
:高斯內(nèi)核的大小推正。其中ksize.width和ksize.height可以不同,但他們都必須為正數(shù)和奇數(shù)(并不能理解)编整√蛳。或者,它們可以是零的掌测,它們都是由sigma計(jì)算而來(lái)内贮。
sigmaX
:表示高斯核函數(shù)在X方向的的標(biāo)準(zhǔn)偏差。
sigmaY
:表示高斯核函數(shù)在Y方向的的標(biāo)準(zhǔn)偏差汞斧。若sigmaY為零夜郁,就將它設(shè)為sigmaX,如果sigmaX和sigmaY都是0粘勒,那么就由ksize.width和ksize.height計(jì)算出來(lái)竞端。
為了結(jié)果的正確性著想,最好是把第三個(gè)參數(shù)Size庙睡,第四個(gè)參數(shù)sigmaX和第五個(gè)參數(shù)sigmaY全部指定到事富。
borderType
:用于推斷圖像外部像素的某種邊界模式技俐。注意它有默認(rèn)值BORDER_DEFAULT***。
從輸入中拷貝某通道到輸出的通道中
void mixChannels(const Mat* src, size_t nsrcs, Mat* dst, size_t ndsts,
const int* fromTo, size_t npairs);
提取目標(biāo)輪廓
void findContours(InputOutputArray image, OutputArrayOfArrays contours,
OutputArray hierarchy, int mode,
int method, Point offset = Point());
對(duì)提取的多邊形輪廓進(jìn)行多邊形擬合
void approxPolyDP( InputArray curve,
OutputArray approxCurve,
double epsilon, bool closed );
InputArray curve
:一般是由圖像的輪廓點(diǎn)組成的點(diǎn)集
OutputArray approxCurve
:表示輸出的多邊形點(diǎn)集
double epsilon
:主要表示輸出的精度统台,就是兩個(gè)個(gè)輪廓點(diǎn)之間最大距離數(shù)
bool closed
:表示輸出的多邊形是否封閉